用fprintf修改文件中每一行的某些数据

xy2992 2016-07-11 05:13:53
要求分别把文件中每行第一个空格之前的数据改成要求的形式其他不变,为啥我用sprintf修改数据再用fprintf传回去,最后程序执行到一半(准确的说是文件的一半就停了),然后打开发现文件一点没变呢是不是我对File*的理解出问题了

FILE *fp;
int i = 1;
if ((fp = fopen(strGcp, "rt+")) == NULL)
{
printf("Open GCP falied:\n%s\n", strGcp);
return FALSE;
}
do
{
char strTemp[1000];
fgets(strTemp, 1000, fp);
char*Ps = strchr(strTemp, 'c');
char*str=strchr(strTemp, ' ');
if (Ps == NULL)continue;//跳过第一行
sprintf(strTemp, "cm_%d_%d%s",n, i, str);
fprintf(fp, "%s\n", strTemp);
printf("替换第%d行\n",i );
i++;
if (feof(fp)) break;
} while (true);
fclose(fp);

return TRUE;
}
...全文
352 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-07-11
  • 打赏
  • 举报
回复
除非修改后文件长度不变,勉强可以在原文件中改。
xy2992 2016-07-11
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。http://bbs.csdn.net/topics/391975224
老师请问是不可以在原文件中更改的么
赵4老师 2016-07-11
  • 打赏
  • 举报
回复
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。http://bbs.csdn.net/topics/391975224

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧