2016-10-02 3 views
-1

scanf에서 형식 지정자 뒤에 공백의 의미를 알고 싶습니다. scanf에는 공간 관련 게시물이 많이 있으며 대부분은 % c 이전의 공간에 대해 이야기합니다. 아래 코드에서 첫 번째 scanf가 반환 할 두 번째 문자를 입력해야합니다. 그냥 Enter 키를 입력하면 scanf가 중단되지 않습니다. 이 두 번째 문자 때문에 문자열을 읽는 두 번째 scanf도 영향을받습니다. % c 다음의 공백 문자는 문자 다음에 입력 된 모든 공백을 무시하고 다음 문자까지 대기한다고 말할 수 있습니까? 그러나 왜 "enter"키는 문자 자체로 간주되지 않습니까? 당신이 "%c" 후 공간을 뒤에 사용하는 경우형식 지정자 뒤에있는 scanf의 공간과 형식 지정자 앞의 공백 ("% c"와 "% c")

char str[50]; 
char c; 
printf("Enter the Character:"); 
scanf("%c ",&c); 
printf("Char read is: %c",c); 
printf("Enter the string:"); 
scanf("%s",str); 
printf("%s", str); 

답변

1

scanf 반환 할 수 있도록 다음의 비 공백을 찾아야합니다. 아무도 없다면 scanf은 영원히 차단 될 것입니다.

+0

그러나 Enter 키가 비 공백으로 간주되지 않는 이유는 무엇입니까? – Rajesh

+1

@Rajesh [scanf] (http://en.cppreference.com/w/c/io/fscanf)는 [\ n]'[공백 문자] (http : //en.cppreference .com/w/c/string/byte/isspace) ... –