当前位置: 技术问答>linux和unix
APUE 第二版 程序 5-2
来源: 互联网 发布时间:2017-02-23
本文导语: 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. ...
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
可是无论输入多少字符都照样输出
求解释!!!
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个字符长字符串。
你可以试着4个字节的buffer读一次10个字符的一行,结果将只是3个字符长字符串。