使用fwrite频繁写文件,每次写固定的几十个字节,写完之后都用fflush函数刷新缓冲区。 这样会造成文件错误吗? 我在具体实行的时候,查看文件的二进制数据,发现每次写的数据包多了一个字节。 请问是fflush造成的结果吗?
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。 不要把 fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了 “多一少一”问题占程序员常犯错误的10%以上!
fflush是把缓存写到硬盘的,不会引起你说的错误。要查查程序。
可能是以文本方式打开,这样写入'\n'时会多一个'\r'字节。 [quote=引用 楼主 rabbitjerry 的回复:] 使用fwrite频繁写文件,每次写固定的几十个字节,写完之后都用fflush函数刷新缓冲区。 这样会造成文件错误吗? 我在具体实行的时候,查看文件的二进制数据,发现每次写的数据包多了一个字节。 请问是fflush造成的结果吗?
69,382
社区成员
243,073
社区内容
加载中
试试用AI创作助手写篇文章吧