文件里面的内容如何删除?

lovelylulu 2004-09-24 05:45:30
现在我有这么个文件 test.data
里面的内容是
abcdefg
1234567
现在我想把
abcdefg删了
这样文件里就只有
1234567

请问 应该如何操作?
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaokaiye 2004-09-25
  • 打赏
  • 举报
回复
可以用fseek和ftell结合,对文件指针进行定位,读1,写入a的位置,读2写入b的位置,直到文件结尾;这样就会有两行1234567,可以把后面的清掉;怎么截断,就请楼下的解。
lovelylulu 2004-09-25
  • 打赏
  • 举报
回复
这个我知道的呀 可是文件大小还是不变的呀
后面的内容只是变空
可是整个文件的大小还是不边的呀
bestvip 2004-09-24
  • 打赏
  • 举报
回复
文件的内容不懂 还得回去看看书
  • 打赏
  • 举报
回复
FILE * fp;
char str[40];
fp = fopen("test.data","r+t");
fgets(fp,str,40);
fgets(fp,str,40);
fclose(fp);
fp = fopen("test.data","w+t");
fprintf(fp,"%s",str);
fclose(fp);
  • 打赏
  • 举报
回复
FILE * fp;
char str[40];
fp = fopen("a.txt","r+t");
fgets(fp,str,40);
fgets(fp,str,40);
fclose(fp);
fp = fopen("a.txt","w+t");
fprintf(fp,"%s",str);
fclose(fp);
qingyuan18 2004-09-24
  • 打赏
  • 举报
回复

写了个通用的:

char temp[20][80] = {0};
int maxline =0;

void del(FILE *fp char *str)
{
int i=0,j=0;
char *p;
FILE *temp_fp;
if((fp=fopen("test.dat","r"))==NULL)
{
printf("open file error!\n");
}
else
{
while(fgets(temp[i],80,fp)!=NULL)
{
p= strchr(temp[i],'\n');
if(p) *p=0;
i++
}
maxline = i;
}

temp_fp = fopen("test.dat","w");
for(j=0;j<maxline;j++)
{
if(strcmp(temp[j],str)!=0)
{
fputs(temp[j],80,temp_fp);
}
}
}

69,369

社区成员

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

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