2016-10-02 76 views
-1

我想知道scanf中格式说明符之后的空格含义。在scanf中有很多与空间有关的帖子,其中大多数都是关于%c之前的空间。在下面的代码中,我必须输入第一个scanf的第二个字符才能返回。只需输入回车键不会中断scanf。由于第二个字符,读取字符串的第二个scanf也受到影响。 我可以说%c后面的空格是忽略字符后面输入的所有空格,并等到下一个字符?但为什么“输入”键不被认为是一个字符本身?格式说明符之后的scanf空格与格式说明符之前的空格(“%c”vs“%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

如果使用"%c"后尾空间,然后scanf将需要找到下一个非空白才能够回来。如果没有,那么scanf将永远阻止。

+0

但是为什么Enter键不被视为非空白空间? – Rajesh

+1

@Rajesh,因为[scanf](http://en.cppreference.com/w/c/io/fscanf)认为''\ n'是一个[空白字符](http://en.cppreference .COM/W/C /字符串/字节/ isspace为)... –