有人可以解释一下为什么scanf
在这两个程序中表现不同。我准备了一个示例测试程序来演示它。
计划版本1
#include <stdio.h>
int main()
{
int i;
char c;
for(i=0;i<4;i++)
{
scanf("%c",&c);
printf("%c",c);
}
return 0;
}
程序版本2(参见scanf)
#include <stdio.h>
int main()
{
int i;
char c;
for(i=0;i<4;i++)
{
scanf(" %c",&c); //The only difference is space
printf("%c",c);
}
return 0;
}
在程序1中我可以输入
一个
b
ç
d
但是在程序2中我只能输入
一个
b
为什么吗
答案 0 :(得分:1)
scanf
中的空格意味着在格式字符串中跳过该点的空格字符。
对于没有空格的版本,解析后的字符为'a','\ n','b','\ n'
对于带空格的版本,解析后的字符为'a',跳过的空格,'b',跳过的空格,'c',跳过的空格,'d'
答案 1 :(得分:-1)
顺便说一下程序员说,在第二个程序中,空格分配给i变量。 a + space + b + space然后循环停止。