fgets没有读取整行,没有遇到新行字符

时间:2014-01-15 12:49:55

标签: c file-io fgets

由于某种原因,fgets正确地从文件中读取行,直到它到达某一行,它只是行的一部分。我用Hex编辑器检查了文件,并且在该行的中间没有换行符。

文件:(相当大。fgets在第269行停止)

/mmc_data/add_rootfs
...
/mmc_data/add_rootfs/data/local/sbin/mcast

这是十六进制表示中的第269行:

2f 6d 6d 63 5f 64 61 74 61 2f 61 64 64 5f 72 6f 6f 74 66 73 2f 64 61 74 61 2f 6c 6f 63 61 6c 2f 73 62 69 6e 2f 6d 63 61 73 74 0a

我只是将fgetsprintf合并:

char cBuffer[1024]="";
while(fgets(cBuffer,1024,fpLog){
printf("%s\n",cBuffer);
}
...

程序正确输出所有内容,直到它到达第269行并且只打印:

/mmc_data/a 
instead of 
/mmc_data/add_rootfs/data/local/sbin/mcast

显然没有达到1024字节以及换行符。那么为什么fgets停在那个位置呢?

1 个答案:

答案 0 :(得分:4)

解决:我在尝试访问其内容之前创建了该文件。我不想关闭文件。所以最后一部分留在缓冲区中并没有写入文件。我使用fflush(fpLog)解决了这个问题 在写作和阅读之间