问一个大家可能认为比较弱智的问题(c语言很基本的问题)
以下是 "the c programming language"开始时的一个例子,吼吼,我是新手,不要奸笑
#include <stdio.h>
/* copy input to output; 1st version */
main()
{
int c;
c = getchar();/*从键盘读一个字符*/
while (c != EOF) {/*该字符是否eof*/
putchar(c);/*如果不是eof则把这个字符打印在屏幕上*/
c = getchar();/*继续读下一个字符*/
}
}
按照我的理解(如注释)应该是读一个字符则显示一个字符,为什么实际过程不是这样?
实际过程是 按下回车是显示一个字符串?
真正的执行过程是怎样的?知道的帮忙解释一下哈
问题点数:20、回复次数:6Top
1 楼shanzhongyufu(山中渔夫)回复于 2006-05-04 15:45:34 得分 5
看看关于输入输出的内容,一般都是缓冲的,只有缓冲区满,或有新行时才一起输入(出),一般情况缓冲能够提高效率,方便工作,如果你在打游戏则,为了迅速响应,那是无缓冲的Top
2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-05-04 17:18:22 得分 5
因为缓冲 ....
所有的输入字符会先保存在缓冲中,
当你输入回车后,
认为输入过程结束,
程序开始处理在缓冲中的字符 ...
所以不是即时的一个字符一个字符的处理的 ...Top
3 楼strongest()回复于 2006-05-04 17:23:34 得分 0
那么关于"缓冲"的这个机制 体现在程序的哪个部分?
putchar() or getchar()?
或者是 操作系统的对于输入输出的实现方式?Top
4 楼aboy85()回复于 2006-05-04 17:52:08 得分 5
操作系统的对于输入输出的实现方式Top
5 楼strongest()回复于 2006-05-04 19:20:48 得分 0
希望有牛人能够给点详细点的解答,或者是推荐本手册让我参考参考,3x.Top
6 楼yihan7h(奕寒)回复于 2006-05-04 21:07:38 得分 5
楼上的几位都说的差不多咯~~楼主不给分,有小气之嫌哈~~Top




