2012-07-18 4 views
3

이 프로그램을 터보 C에서 실행하려고했지만 출력을 해독 할 수 없었습니다. %*c의 의미는 무엇입니까? 어떤 도움을 주시면 감사하겠습니다.% * c in scanf() - 무슨 뜻입니까?

int dd,mm,yy; 
printf("\n\tEnter day,month and year"); 
scanf("%d %*c %d %*c %d",&dd,&mm,&yy); // what does %*c mean ? 
printf("\n\tThe date is : %d %d %d",dd,mm,yy); 

scanf() 형식

Enter day, month and year 23 
2 
1991 
3 
5 
The date is: 23 1991 5 
+3

다음 문자를 버립니다. – nhahtdh

+0

다음 3자를 버리려면 어떻게해야합니까? –

+2

@ tuğrulbüyükışık : '% * 3c'를 사용하여 건너 뛸 문자 수를 지정할 수 있습니다. –

답변

8

* '는 데이터를 읽을 수는 있지만 인수 목록에 변수에 할당하지 않는다'는 OUTPUT.

18/07/2012 

을 하루 (18), 월 (7)와 올해 (2012) 올바르게 해석을 얻을 : 맥락에서, 당신이 입력 할 수 있습니다 의미합니다. 형식 문자열의 공백은 중요하고 복잡합니다. 일반적으로 %c은 공백을 포함하여 다음 문자를 읽지 만 공백은 공백으로 처리하므로 %*c 변환 지정자는 공백이 아닌 문자를 사용해야합니다.

따라서 관찰 된 행동 당신이 입력 할 때 :

23 2 1991 3 5 

2 (자체) 두 번째에 의해 소비 된 첫 번째 %*c과 (자체) 3에 의해 소비되었다.

이것은 표준 C이며 Turbo C의 고유 기능이 아닙니다 (이 질문의 첫 번째 판이 지정되었지만이 답변을 처음 작성한 이후 Turbo C에 대한 참조를 삭제하도록 질문이 편집되었습니다).

+0

나는 이것을 모른다고 생각한다. 아무튼, 고맙다! – Peps0791

4

% 이후의 형식 문자열에서 형식과 일치하는 입력이 무시된다는 것을 나타냅니다. 따라서 사용하지 않을 일치하는 값을 저장하기 위해 변수에 대한 포인터를 전달할 필요가 없습니다.

3

공백 인 / 또는 -과 같이 다음에 쓰는 문자를 무시하는 것을 의미합니다.

1

*scanf을 사용하면 할당이 억제됩니다. 뒤 따르는 변환 결과는 무시됩니다.

관련 문제