为什么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 与编译器有关吗?



...全文
649 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小罗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文件里多了个换行,把最后一行删除,让光标出现在第七行末试试
昵称很不好取 2013-02-16
  • 打赏
  • 举报
回复
最后一行是回车?
wade_2003 2013-02-16
  • 打赏
  • 举报
回复
应该是你的input文件里有换行和回车操作造成的吧。
palm008 2013-02-16
  • 打赏
  • 举报
回复
必须注意linux的回车换行和windows的回车换行的区别,建议使用工具查看所有隐藏的字符

69,336

社区成员

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

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