70,024
社区成员




while((c = getchar())!=EOF)
{
putchar(c);
}
每次调用getchar,把一个字符读到c中,如果缓冲没有数据,
那么就一直等待用户输入,直到用户输入回车('\n');
此时getchar返回输入流缓冲中,接收的第一个字符;
输入流缓冲,此时,接收一行字符,包括回车换行(‘\n’)。
getchar返回后,只有第一个字符赋值给了c 其他字符还在输入流缓冲。
此时程序调用putchar函数输出c
只要这个字符不是‘\n’ ,那么这个字符只是输出到流缓冲,并不输出到屏幕。
接着又是调用getchar, 然后 putchar
当 getchar读到‘\n’时,接着putchar 输出‘\n’
此时用户输入的一整行数据,才开始输出到屏幕
结果就是输入一行,输出一行
然后,再重新开始这个过程。
直到读到文件结束标志,此时c == EOF,就是键盘输入ctrl Z ,显示 ^Z,结束程序的运行。
linux ,unix 键盘输入ctrl D ,显示 ^D
while((c = getchar())!=EOF)
{
putchar(c);
}
每次调用getchar,把一个字符读到c中,如果缓冲没有数据,
那么就一直等待用户输入,直到用户输入回车('\n');
此时getchar返回输入流缓冲中,接收的第一个字符;
输入流缓冲,此时,接收一行字符,包括回车换行(‘\n’)。
getchar返回后,只有第一个字符赋值给了c 其他字符还在输入流缓冲。
此时程序调用putchar函数输出c
只要这个字符不是‘\n’ ,那么这个字符只是输出到流缓冲,并不输出到屏幕。
接着又是调用getchar, 然后 putchar
当 getchar读到‘\n’时,接着putchar 输出‘\n’
此时用户输入的一整行数据,才开始输出到屏幕
结果就是输入一行,输出一行
然后,再重新开始这个过程。
直到读到文件结束标志,此时c == EOF,就是键盘输入ctrl Z ,显示 ^Z,结束程序的运行。
linux ,unix 键盘输入ctrl D ,显示 ^D
[/quote]while((c = getchar())!=EOF)
{
putchar(c);
}
getchar你是想说getchar并不是直接从键盘获得字符,而是我们把字符字符放到stdin流中,只有按下回车键,stdin才被刷新,这时getchar就可以从中获取字符,并把它赋值给c让后输出来,每从stdin流中获取一个字符,stdin便少一个字符,自动刷新一次,getchar便再次获得字符,一直到stdin中没有字符,就不会在刷新,是这个意思吗