gpt4 book ai didi

c - C 中奇怪的 scanf 问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:41 25 4
gpt4 key购买 nike

例如,假设我使用 scanf 从键盘读取一个字符。之后,我使用 printf 打印我刚刚读取的字符。

scanf("%c",&ch);
printf("%c",ch);

scanf 正在读取字符时,我必须按回车键才能继续并运行 printf,对吗?

假设我用键盘输入ABCD。之后 printf 将打印 A

但是当我这样做的时候:

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

并用键盘输入ABCD,我假设printf 必须打印A。因为 A 不是 \n 它会继续循环,对吗?

但是它会打印 ABCD 而不是这个。为什么会这样?

最佳答案

当您输入 "ABCD\n" 时,每个 scanf("%c",&ch); 从输入缓冲区,直到到达换行符。

所以打印完'A'后,buffer中还有一个"BCD\n",这样接下来的scanf 在循环的下一次迭代中立即成功读取另一个 char'B'

关于c - C 中奇怪的 scanf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com