By: Ailson Jack
Date: 2019.01.24
个人博客:http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/94.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。
最近在写一个操作文件的函数,使用fseek()函数定位到文件某个位置,然后用fwrite()重新更新该位置的内容,发现该位置处的内容并没有更新,反而更新的内容竟然出现在了文件末尾,真的是不知道什么情况。
下面先简单复现我所遇到的问题吧,示例代码如下:
/*
*By:Ailson Jack
*Date:2019.01.24
*Blog:www.only2fire.com
*Des:fseek 测试
*/
#include <stdio.h>
int main(void)
{
char *fileName = "test.txt";
char ch = 'W';
FILE *fp = NULL;
int iRet = 0;
fp = fopen(fileName, "a+");
if(!fp)
printf("open %s failed!\r\n", fileName);
iRet = fseek(fp, 0, SEEK_SET); /*定位指针到文件头*/
if(iRet < 0)
{
printf("fseek failed!\r\n");
goto exit;

本文详细探讨了在使用fseek()和fwrite()函数时,为何在a+模式下写入的内容会出现在文件末尾,而非预期的位置。通过分析fopen()的a+模式特性,揭示了问题的根源,并提供了修改解决方案。
最低0.47元/天 解锁文章
547





