由于某种原因,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
我只是将fgets
与printf
合并:
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停在那个位置呢?
答案 0 :(得分:4)
解决:我在尝试访问其内容之前创建了该文件。我不想关闭文件。所以最后一部分留在缓冲区中并没有写入文件。我使用fflush(fpLog)
解决了这个问题
在写作和阅读之间