c - 如何在 C 中对单个字符执行 scanf

标签 c char scanf

<分区>

在 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/

相关文章:

c - 使用 fgets 和 sscanf 的意外重复

c - 如何检查 scanf 时是否只得到整数(如 2)而不是整数后跟字符(如 2c)

c - 在 C 语言中翻转句子中的单个单词?

c - 我正在尝试编写一个 C 代码来对 String 进行排序,但第 13 行总是显示错误消息

c - 如何在结构中正确使用 fgets?

C++ char * split with strtok 不工作

c++ - 如何在 C++ 中使用指针翻转 Char 数组

objective-c - 将 NSString 转换为 int HEX

c++ - 为什么 memcpy/memmove 在将 int 复制到字节缓冲区时反转数据?

c - 在 C 中标记字符串?