C语言 fgets()和getc()读取文件流的区别

IIlIIlllIIll 2015-11-12 11:29:33
源于C Primer Plus上的一道习题:分别打印两个文件的同一行。
答案写的是:
ch1 = getc(f1);
ch2 = getc(f2);
while (ch1 != EOF || ch2 != EOF)
{
while (ch1 != EOF && ch1 != '\n') /* skipped after EOF reached */
{
putchar(ch1);
ch1 = getc(f1);
}
if (ch1 != EOF)
{
putchar('\n');
ch1 = getc(f1);
}
while (ch2 != EOF && ch2 != '\n') /* skipped after EOF reached */
{
putchar(ch2);
ch2 = getc(f2);
}

if (ch2 != EOF)
{
putchar('\n');
ch2 = getc(f2);
}
}

我写的代码是:
while(fgets(first, MAX, fp1) || fgets(second, MAX, fp2))
{
fputs(first, stdout);
fputs(second, stdout);
}
PS first和second是字符数组
我能理解逐字符,但是我用fgets()哪里错了?并且我只读取一个文件结果是正确的,读取两个就会出现乱码。这是怎么回事啊?
...全文
210 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
IIlIIlllIIll 2015-11-12
  • 打赏
  • 举报
回复
谢谢赵老师 书上好像提过短路,不过没注意,现在吸取教训了:)
赵4老师 2015-11-12
  • 打赏
  • 举报
回复
搜“逻辑短路” 用fgets受MAX限制

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧