gpt4 book ai didi

ch2=getchar() 在最后一个输入循环后不起作用 while((ch=getchar())!=EOF)

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:10 25 4
gpt4 key购买 nike

#include <stdio.h>
int main(){
char ch;
while((ch=getchar())!=EOF){
putchar(ch);
}
char ch2 = 'A';
printf("ch2=======>%c\n",ch2);
ch2 = getchar();
printf("ch2=======>%d\n",ch2);
return 0;
}

我不明白为什么它会跳过 ch2=getchar() 输入,我得到 ch2 == -1,这是 EOF 的值。我试图通过在 ch2=getchar() 之前添加另一个 getchar() 来解决这个问题,但我仍然得到 ch2 == -1。为什么会这样以及如何解决?感谢您的帮助。

我正在使用 MacOS。

最佳答案

编译时,始终启用所有警告,然后修复这些警告

我使用了你的这个版本的代码,它可以干净地编译:

#include <stdio.h>
int main(){
int ch;
while((ch=getchar())!=EOF){
putchar(ch);
}
int ch2 = 'A';
printf("ch2=======>%c\n",ch2);
ch2 = getchar();
printf("ch2=======>%d\n",ch2);
return 0;
}

然后输入:

ddd<ctrl-d>ccc<cr>

这是预期的(和实际的)结果:

ddd
ddd
ch2=======>A
ccc
ch2=======>99

注意事项:

1) getchar()直到 <cr> 才返回或 <ctrl-d>已进入

2) 所有输入的字符都被终端驱动程序(而不是程序)回显

3) 还有2个c s 和一个 <cr>在还没有被消费的输入缓冲区中

关于ch2=getchar() 在最后一个输入循环后不起作用 while((ch=getchar())!=EOF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672689/

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