You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scanf()在do-while循环中的异常表现:输入字符后无输出问题咨询

输入字符后程序无输出的原因

先看你给出的代码:

char ch;
do {
    scanf("%c" , &ch);
} while (ch != '\n');
printf("%c", ch);

问题出在循环逻辑和最后输出的字符上:

  • do-while循环会逐个读取输入流里的字符,直到读到换行符'\n'才终止。当你输入abc并回车,输入流里的内容是'a'、'b'、'c'、'\n'。循环会依次把前三个字符读入ch,最后一次读取的是'\n',此时循环条件不满足,循环结束。
  • 最后printf输出的是ch里存储的'\n',也就是换行符。这个字符在终端里只会让光标下移一行,不会显示任何可见的字符,所以你会觉得程序“无输出”。

如果想验证这个结论,可以修改输出语句,把字符和它的ASCII码一起打印出来:

printf("最后读取的字符:%c,ASCII码:%d\n", ch, (int)ch);

运行后你会看到ASCII码是10,对应的就是换行符。

内容的提问来源于stack exchange,提问作者user13780178

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:59:18