为啥fgets会多读一行

为什么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] = "";