APUE  第二版 程序 5-2
01.#include "ourhdr.h"  
02.  
03.int main(void)  
04.{  
05.        char        buf[MAXLINE];   // 如果把 MAXLINE 改为 5 结果如何 ?    
06.  
07.        while(fgets(buf, MAXLINE, stdin) != NULL)  
08.                if(fputs(buf, stdout) == EOF)  
09.                        err_sys("output error");  
10.  
11.        if(ferror(stdin))  
12.                err_sys("input error");  
13.  
14.        exit(0);                 
15.}
我把 MAXLINE 改为 5 理论上最多应该只从 stdin 读取 4 个字符写到 buf 然后再输出到 stdout  
可是无论输入多少字符都照样输出   
求解释!!!
------解决方案--------------------
当然,循环fgets一直读到到你ctrl+d,还是输出所有内容。
你可以试着4个字节的buffer读一次10个字符的一行,结果将只是3个字符长字符串。