代码1:
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
代码2:
#include<stdio.h>
main( )
{
int c,d;
c=getchar();
d=getchar();
putchar(c);
putchar(d);
}
1)如果 输入:bo 输出:bo 我在第二个程序中知道这个,它将它们存储在变量c和d中,但它将它们存储在第一个程序中。
2)PL。解释第一个程序的工作,为什么它重复任何单词,尽管它的长度超过一个字符。
3)从书中我知道每当我进入或遇到一些错误时都会遇到EOF但是即使按下回车键,这个程序也不会停止,但它会再次打印下一行字符。
答案 0 :(得分:2)
对于问题一,它将他们存储在c
中(但一次只能存储一个)。更好的缩进代码是:
while ((c = getchar()) != EOF)
putchar(c);
所以你可以看到,对于输入c
的每个字符,它也会输出它。请记住,语法是以下的缩写形式:
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
所以你可以看到循环的每次迭代都得到下一个字符。
第二个问题,我假设你问为什么它适用于任何长度输入。那是因为它不关心长度。它只是存储和回显每个角色。
如果你愿意,你可以给它十亿个字符。
对于第三个,你得到EOF的错误或文件的结尾(在Windows行开头的CTRL-Z,通常 CTRL-D在类UNIX操作系统下,除非你设置了一些奇怪的终端特性。)
如果您只对行感兴趣,可以使用以下内容:
while ((c = getchar()) != '\n')
putchar(c);
putchar ('\n');
答案 1 :(得分:0)
while ((c = getchar()) != EOF)
从stdin读取值,直到遇到EOF(文件结束)。因此,相同的变量c存储在不同迭代中读取的不同值。
在第二个例子中,只有两个变量(char类型),所以它只能读取和存储两个字符。