文档

napei9506 2017-09-15 08:09:44
代码如下 我想运行此代表 删除比如说 1.txt 文档里 带有“换” 字的一行 但是 程序运行后 原文件还是 有“换” 字 ?

而且运行到 printf("Removed %s", path); Removed已经打印出来了,但是 原文件 E:\1.txt 还是在那……

谢谢


#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
char path[100] = "E:\\1.txt";
char temppath[100] = { 0 }; //定义临时文件的路径
FILE *pf = fopen(path, "r"); //按照读的方式打开文件
if (pf == NULL)
{
printf("文件打开失败");
return;
}

tmpnam(temppath); //产生一个唯一的文件名

FILE *ptemp = fopen(temppath, "w");
if (ptemp == NULL)
{
printf("临时文件创建失败");
return;
}
char str[120];
char findstr[30] = "换";

while (fgets(str, 120, pf)) //从原来的文件读取字符串
{
char *p = strstr(str, findstr);
if (p == NULL) //没有找到
{
fputs(str, ptemp); //正常写入临时文件
}
else
{
//找到 //什么都不操作
}

}

fclose(pf);
fclose(ptemp);

char show[200];
sprintf(show, "type %s", temppath);
system(show);

if (remove(path) == 0)
{
printf("Removed %s", path);
}
else
{
perror("remove");
}


//remove(path); //删除原来的文件
rename(temppath, path); //将临时文件命名为原来的文件

system("pause");

}



...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
napei9506 2017-09-22
  • 打赏
  • 举报
回复
是的, 我用了 rename , 但那是把 旧文件中的 “换” 字删除之后的新文件改名 ,改成原来的名字 。 所以名字上是相同的,但是内容 应该不能是相同的, 但运行结果确还是相同 ?
ipqtjmqj 2017-09-15
  • 打赏
  • 举报
回复
第1个问题可能是编码不一致,确保文本文件也用ASCII保存 第2个问题你remove后不是还rename了吗

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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