首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为啥fgets会多读一行

2013-02-27 
为什么fgets会多读一行程序如下 #includestdio.hint main(){freopen(input.txt,r,stdin)int count

为什么fgets会多读一行
程序如下 
#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
那么为啥fgets会多读一行

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




[解决办法]
最后一行是回车?
[解决办法]
估计是.txt文件里多了个换行,把最后一行删除,让光标出现在第七行末试试
[解决办法]
input.txt里最后是不是有个空行?我在linux下测过,只有当input.txt最后有个空行时才会出现你那个现象。
[解决办法]
必须注意linux的回车换行和windows的回车换行的区别,建议使用工具查看所有隐藏的字符
[解决办法]
应该是你的input文件里有换行和回车操作造成的吧。
[解决办法]

引用:
最后一行是回车?

++
[解决办法]
vs 2012验证同上
[解决办法]
引用:
引用:最后一行是回车?  没有  我保存的时候把光标放在第七行的。

用Delete键在光标处多按几下,看看是否不同
[解决办法]
最后一行有东东存在
[解决办法]
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

[解决办法]
你将str初始化试试
char str[15] = "";

热点排行