这涉及到scanf对空白字符的处理。 虽然空格、制表符和新行符都用做域分割符号,但读单字符操作中却按一般字符处理。例如,对输入流 "x y" 调用:scanf("%c%c%c",&a,&b,&c);返回后,x 在变量 a 中,空格在变量 b 中,y 在变量 c 中。 将y按%d打印,可以看到y的值为10,即回车符。 #include <stdio.h> int main() { int x; char y; scanf("%d", &x); printf("x:%d", x); scanf("%c", &y); printf("y:%d", y); // 将y按%d打印,可以看到y的值为10 getchar(); return 0; } 改成char y[2];scanf("%1s", y);,可以过滤空白符。
这涉及到scanf对空白字符的处理。
将y按%d打印,可以看到y的值为10,即回车符。
改成
char y[2];scanf("%1s", y);
,可以过滤空白符。