Chinaunix

标题: 请问一个很简单的C语言的题目!为何结果是这样的呢?想了很久都不明白 [打印本页]

作者: xyzjay    时间: 2007-12-10 14:16
标题: 请问一个很简单的C语言的题目!为何结果是这样的呢?想了很久都不明白
今天看C语言圣经 发现一个小程序
源程序如下相信大家一定见过!
#include<stdio.h>
void main()
{
    int c;

    while((c = getchar())!=EOF)
   {   
    putchar(c);
    }
}

就是输入一个字符,打印出一个字符!
按照这段程序的表达的意思就是 输入一个字符打印一个字符!
例如 输入  a 按下回车键 打印出一个a

但是我无意中 输入了 abcdefg 然后按下回车键打印出了 abcdefg

哪个牛人解释一下原因?
想了好久没有想明白啊!
作者: immortality    时间: 2007-12-10 14:40
char buf[512];
...
while ( (rd=read(0,buf,512)) >0 )
    write(1,buf,rd);

就像大部分情况下运行上面的代码,
不会只当从stdin读到512个字符后才向stdout输出,
而是你输入几个字符,键入回车,就会立即输出。

这个其实是和终端的设置有关,终端也可以改为单字符输入的模式,楼主有兴趣可以找书详细看看
作者: xyzjay    时间: 2007-12-10 14:45
谢谢你!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2