日期:2014-05-16  浏览次数:20618 次

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个字符长字符串。