C语言文本文件中字符串的查找与替换。

C语言文本文件中字符串的查找与替换。,第1张

#include <stdio.h>

#include <string.h>

#include <math.h>

int main()

{

char filename[10],string1[15],string2[15],line[100]

  液枝  

FILE *pfile=NULL

scanf("%s %s %s",filename,string1,string2)

 

    pfile=fopen(filename,"r+")

if(!pfile)

{

 perror("文件不存在")

 吵盯return 1 

}

   printf("将把文件%s中字符串%s替换成%s\n",filename,string1,string2)

    while(!feof(pfile))

{

      char *index=NULL

          fgets(line,100,pfile)

   index=strstr(line,string1)

  if(index)

  {

             int d2=strlen(string2) 

 int d1=strlen(string1)

 printf("%s 中有%s\n"升埋和,line,string1)

 if(d1!=d2)

 {

   memmove(

                    index+d1+d2-d1,

   index+d1,

   strlen(line))

 }

               memcpy(index,string2,strlen(string2)) 

   fseek(pfile,-strlen(line)+d2-d1,SEEK_CUR)

   fputs(line,pfile)

   fflush(pfile)

  }

}

   fclose(pfile)

 return 0

}

#include <stdio.h>

int main()

{

FILE *in, *out

char ch

if((in = fopen("d:\\1.txt", "r")) == NULL)

{

printf("无法打开输伏裤入文件!\n")

return 1

}

if((out = fopen("d:\\2.txt", "w")) == NULL)

{

printf("无法打开陪运输出文件!\n")

return 2

}

while((ch = getc(in)) != EOF)

if(ch == '\t')

fprintf(out, "芦厅梁----")

else

putc(ch, out)

fclose(in)

fclose(out)

return 0

}

由于 *** 作系统对文件 *** 作做了封装,本来很容易的事情变得很难了。

修改文件最好的,最简单的方法,是新建一个文件,把修改部分前面的,先写入新文件,

然后写入修改的部分,再把后一部分没有修改的,写到新文件中去。然后文件重命名。

原文件改名备份文件,新文件改名原文件。

如果修改的数据很袭仔少N~100N KB,N~10N MB 可以用缓冲区处理好修改,再写入文件。

FILE×

fopen

fseek

fwrite

fclose

PS:隐禅橡

1)如果修改的内容,和原文件被修改的数据,字节数完全相同,直接找到要修改的地方,写入新内容就可以了。

2)如果修改后的内容,和原文件被修改的数据,字节数不同,建议新建一个文件,否则很麻烦灶旁,要用读写方式打开。

a) 如果修改后数据增加,把修改数据后的所有数据向后移动,给修改的数据腾地方。

b) 如果减少,要把所有数据前移,然后修改文件长度。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12256454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存