我尝试运行以下程序:
int main(){
char a;
char b;
char c;
printf("\nenter a: ");
scanf("%c", &a);
printf("\nenter b: ");
scanf("%c", &b);
printf("\nenter c: ");
scanf("%c", &c);
return 0;
}
运行程序时,它会提示您输入 a 的值。一旦这样做,系统会提示您输入 b 的值,但是不允许您输入值,因为程序会跳过扫描,然后再次提示您输入未跳过的 c 值。我可以初始化a和c,但不能初始化b。我不知道为什么。我在某个地方读到在 scanf 中使用 %[^\n] ,但我尝试使用它,但我认为我没有正确使用它,因为它仍然不起作用。
这是输出(带有一些输入示例):
enter a: 1
enter b:
enter c: 1
process returned 0 (0x0)
最佳答案
不要使用“%c”
,而是使用“%c”
。
如果没有空格,当格式说明符为 %c
时,scanf 不会跳过空格。这最初会令人困惑,因为它会跳过其他格式说明符的空格,例如 %d
、%f
、%s
等。
关于c - scanf 在 C 中被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024729/