This question already has answers here:
scanf() leaves the new line char in the buffer

(4个答案)


去年关闭。




在C中:
我正在尝试使用scanf从用户那里获取字符,当我运行它时,程序不要等待用户键入任何内容...

这是代码:
char ch;
printf("Enter one char");
scanf("%c", &ch);
printf("%c\n",ch);

为什么不工作?

最佳答案

%c转换说明符不会自动跳过任何前导空格,因此,如果输入流中有流水换行符(例如,从上一个条目开始),scanf调用将立即使用它。

解决该问题的一种方法是在格式字符串的转换说明符之前放置一个空格:

scanf(" %c", &c);

格式字符串中的空格告诉scanf跳过前导空白,并且第一个非空白字符将与%c转换说明符一起读取。

关于c - 如何在C中对单个字符执行scanf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13542055/

10-11 21:57
查看更多