C FGET未读取整行,未遇到新行字符

C FGET未读取整行,未遇到新行字符,c,file-io,fgets,C,File Io,Fgets,出于某种原因,fgets从文件中正确地读取行,直到它到达某一行,在该行中它只获取该行的一部分。我用十六进制编辑器检查文件,中间没有新的行字符。 档案:相当大。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

出于某种原因,fgets从文件中正确地读取行,直到它到达某一行,在该行中它只获取该行的一部分。我用十六进制编辑器检查文件,中间没有新的行字符。 档案:相当大。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结合起来:

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

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

显然,1024字节以及新行字符尚未到达。那么为什么fgets会停在那个位置呢?

问题解决了:我在试图访问文件内容之前创建了该文件。我不想关闭该文件。所以最后一部分留在缓冲区中,没有写入文件。我使用fflushfpLog解决了这个问题
在写入和读取之间

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

我们确定是输入错误,而不是输出错误吗?strlencBuffer说什么?while循环在打印了这11个字符后退出?当其他进程正在写入文件时,您正在读取该文件?在这种情况下,读取可能由于EOF而停止。@alk yes由于某种原因在读取该行后退出。虽然有更多的行需要读取。它的退出是指退出循环还是程序?我们确定是输入错误,而不是输出错误吗?strlencBuffer说什么?while循环在打印了这11个字符后退出?当其他进程正在写入文件时,您正在读取该文件?在这种情况下,读取可能由于EOF而停止。@alk yes由于某种原因在读取该行后退出。虽然有更多的行要读,但它退出是指退出循环还是程序?
/mmc_data/a 
instead of 
/mmc_data/add_rootfs/data/local/sbin/mcast