为什么fgets会多读一行

MissAnnLucky 2013-02-16 12:04:19
程序如下
#include<stdio.h>
int main()
{
freopen("input.txt","r",stdin);
int count=0;
char str[15];
while(fgets(str,15,stdin)!=NULL)
{
count++;
printf("%d:%s",count,str);
}
return 0;
}

input.txt文件中:Rbgggrrggbgr
Rrrbbbrrbbbr
Rbgrbgrrrrrg
Brbggrgbrbgr
brbggrgbgrrb
rgbgrbrrbgbg
brgrbgggbrbr
那么

为什么会有 8:
这一行呢?我是win7,codeblocks 与编译器有关吗?



...全文
513 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
小罗1995 2014-12-16
我也遇到了,这个问题,望兄台指点
  • 打赏
  • 举报
回复
ForestDB 2013-02-20
是初始化后试的吗?
  • 打赏
  • 举报
回复
MissAnnLucky 2013-02-20
引用 12 楼 ForestDB 的回复:
你将str初始化试试 char str[15] = "";
今天又把程序试了一遍,结果输出结果就没有第八行了呢,很奇怪。
  • 打赏
  • 举报
回复
ForestDB 2013-02-19
你将str初始化试试 char str[15] = "";
  • 打赏
  • 举报
回复
Yalye 2013-02-18
最后一行有东东存在
  • 打赏
  • 举报
回复
赵4老师 2013-02-18
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
  • 打赏
  • 举报
回复
MissAnnLucky 2013-02-17
引用 1 楼 thefirstz 的回复:
最后一行是回车?
没有 我保存的时候把光标放在第七行的。
  • 打赏
  • 举报
回复
兆帅 2013-02-17
引用 1 楼 thefirstz 的回复:
最后一行是回车?
++
  • 打赏
  • 举报
回复
Franklin 2013-02-17
引用 7 楼 anqier0468 的回复:
引用 1 楼 thefirstz 的回复:最后一行是回车? 没有 我保存的时候把光标放在第七行的。
用Delete键在光标处多按几下,看看是否不同
  • 打赏
  • 举报
回复
Franklin 2013-02-17
vs 2012验证同上
  • 打赏
  • 举报
回复
xinhua0910 2013-02-16
input.txt里最后是不是有个空行?我在linux下测过,只有当input.txt最后有个空行时才会出现你那个现象。
  • 打赏
  • 举报
回复
wanggongcun 2013-02-16
估计是.txt文件里多了个换行,把最后一行删除,让光标出现在第七行末试试
  • 打赏
  • 举报
回复
最后一行是回车?
  • 打赏
  • 举报
回复
wade_2003 2013-02-16
应该是你的input文件里有换行和回车操作造成的吧。
  • 打赏
  • 举报
回复
palm008 2013-02-16
必须注意linux的回车换行和windows的回车换行的区别,建议使用工具查看所有隐藏的字符
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2013-02-16 12:04
社区公告
暂无公告