gpt4 book ai didi

c - 这里无法理解getchar和putchar的作用

转载 作者:行者123 更新时间:2023-11-30 21:27:29 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>

int main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
}
return 0;
}

当我编译并输入 ABC 然后按 Enter 时,永无休止的循环开始,就像 AAAAAAAAA....

现在看看下面的代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar (); // added this single line
}
return 0;
}

在这个程序中,当我输入ABC时,输出是ABC。谁能解释一下为什么它不只显示一个 A 作为输出?

最佳答案

看看下面你提到的代码

int main(void){
int c;
c = getchar();
while (c != EOF) {
putchar(c);

}
return 0;
}

c = getchar(); 执行时,如果您在运行时提供了 ABC 形式的输入并按 ENTER(\n ),此时 c 包含第一个字符 A。接下来进入循环,您的条件是 c!=EOFA!=EOF 始终为 true 并且它将无限打印 A 因为您是不要求第二次输入,因此 c 保留 A

上述代码的正确版本是

int main(void){
int c;
while ( (c = getchar())!=EOF) { /* to stop press ctrl+d */
putchar(c);
}
return 0;
}

情况 2 :- 现在看第二个代码

int main(void){
int c;
c = getchar();
while (c != EOF) { /*condition is true */
putchar(c);
c = getchar ();/*After printing ABC, it will wait for second input like DEF, unlike case-1 */
}
return 0;
}

谁能解释一下为什么它不只显示一个 A 作为输出?为什么它应该只打印 A,它会打印您给出的任何输入,例如 ABC 等等。请注意,getchar() 适用于缓冲输入,即当您按 ENTER getchar() 时,getchar() 将读取该输入,并且当没有剩余内容时读取getchar()返回EOF

关于c - 这里无法理解getchar和putchar的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50654378/

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