在这里无法理解 getchar 和 putchar 的作用
not able to understand the role of getchar and putchar here
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
}
return 0;
}
当我编译并输入 ABC 然后按回车键时,永无止境的循环开始像 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!=EOF
即 A!=EOF
始终为真并且它将无限打印 A
因为您不要求第二次输入所以 c
保持 A
.
以上代码的正确版本是
int main(void){
int c;
while ( (c = getchar())!=EOF) { /* to stop press ctrl+d */
putchar(c);
}
return 0;
}
case 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()
returns EOF
.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
}
return 0;
}
当我编译并输入 ABC 然后按回车键时,永无止境的循环开始像 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!=EOF
即 A!=EOF
始终为真并且它将无限打印 A
因为您不要求第二次输入所以 c
保持 A
.
以上代码的正确版本是
int main(void){
int c;
while ( (c = getchar())!=EOF) { /* to stop press ctrl+d */
putchar(c);
}
return 0;
}
case 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()
returns EOF
.