首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

APUE 第二版 程序 5-2,该怎么解决

2012-06-08 
APUE第二版 程序 5-201.#include ourhdr.h02.03.int main(void)04.{05.charbuf[MAXLINE]// 如果把 MAXL

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

热点排行