急·!!怎样能把磁盘上的文件删出一行

juneU 2003-04-29 10:12:49
我用fp_del=fopen("file","r+"),打开一个file文件,我的目的是删除其中一行。怎样才能实现。
...全文
33 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phlip 2003-04-29
  • 打赏
  • 举报
回复
进来学习
DanielWYO 2003-04-29
  • 打赏
  • 举报
回复
只有用楼上的办法了.

因为没有办法直接删DI~~~~~
hold2001 2003-04-29
  • 打赏
  • 举报
回复
同意楼上的看法!
keenleung 2003-04-29
  • 打赏
  • 举报
回复
5打错了,fprintf,fputs任君选择

另外,把文件读到内存,修改后用“w”方式重写也是一种方法
keenleung 2003-04-29
  • 打赏
  • 举报
回复
一个比较容易想到的办法就是用空格覆盖

1.用fseek找到该行的首位置
2.fgets->strlen,主要是得到要删除的行的长度,即空格的数量
3.fseek重新定位回首位置,因为fgets修改了文件指针
4.用memset填充一个szTemp,可以用空格0x20,填充大小为strlen-1,别忘了在末尾补上'\0'
5.fputs任君选择把szTemp写到文件中
juneU 2003-04-29
  • 打赏
  • 举报
回复
dear all:
i am sorry,i can only use english,
up is my thinking, but still can not at the end of my purpose,
please help me to rewind it,

thank you all your message!!
shortppsy 2003-04-29
  • 打赏
  • 举报
回复
arrgy
juneU 2003-04-29
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

char *strstr_rem(char *string,char *substring)
{
int i,j,k,loc=-1;
for (i=0;string[0]&&(loc==0);i++)
for (j=i,k=0;string[j]==substring[k];j++,k++)
if (!substring[k+1])
loc=i;
if (loc!=-1)
{
for (k=0;substring[k];k++)
for (j=loc,i=k+loc;string[i];i++,j++)
string[j]=string[i];
string[i]=NULL;
}
return(string);
}
void main()
{
char *zmod_get,*buff_zmod;
FILE *fp,*fp2;
if ((fp=fopen("zmoddb.dbf","r+"))==NULL)
{ perror("can't open:\n");
}
while ((fgets(zmod_get,200,fp))!=NULL)
{ strcat(buff_zmod,zmod_get);
memset(zmod_get,0,200);
}
fclose(fp);
printf("input:\n");
gets(zmod_get);
fp2=fopen("zmoddb.txt","w");
fputs(strstr_rem(buff_zmod,zmod_get),fp2);
fclose(fp2);
}

70,035

社区成员

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

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