C++实现txt文件中的查找与替换功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现txt文件中的查找与替换功能相关的知识,希望对你有一定的参考价值。
设计一个程序,实现txt文件中的查找与替换功能,要求如下:
在原始文件1.txt中输入一段字符串,运行程序,在输出文件2.txt中实现用空格替换回车的功能。
(这应该是程序的一部分,求大神帮忙补全,如果完整,请帮忙找出错误)
FILE *fp1,*fp2; \\声明文件指针变量名
char del;
int i;
printf("\n1.txt为原始文件.");
printf("2.txt为替换文件.\n");
printf("\n按 ENTER 键继续!\n");
getchar(); \\键盘读入字符
if((fp1=fopen("1.txt","r+"))==NULL) \\打开原始文件1.txt,将其赋给了文件指针fp1,并判断文件指针fp1是否为NULL
printf(" 1.txt 打开失败!\n");
exit(0); \\终止程序
if((fp2=fopen("2.txt","w+"))==NULL) \\打开原始文件2.txt,将其赋给了文件指 针fp2,并判断文件指针fp2是否为NULL
printf(" 2.txt 打开失败!\n");
exit(0); \\终止程序
while((del=fgetc(fp1))!=EOF) \\如果文件fp1读入结束,结束循环
if(del=='\n') \\回车
i=fputc(' ',fp2); \\空格
if(i==-1) printf("写入2.txt失败!\n");
else
i=fputc(del,fp2); \\空格替换回车
if(i==-1) printf("写入2.txt失败!\n");
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void file_replace(FILE *fp_in,FILE *fp_out,char *src,char *dst)
char c=fgetc(fp_in);
char tmp[100];
int count=0;
while(c!=EOF)
int pPos=0;
if(c!=src[pPos])
fputc(c,fp_out);
c=fgetc(fp_in);
continue;//如果当前字符不相等,继续下一个字符
memset(tmp,0,100);
while(c==src[pPos])
tmp[pPos]=c;
c=fgetc(fp_in);
pPos++;//相等的部分跳过
if(src[pPos]=='\\0')
count++;
printf("源串已找到!替换%d处\\n",count);
fputs(dst,fp_out);
continue;
else
fputs(tmp,fp_out);
continue;//如果当前字符不相等,继续下一个字符
return;
int main()
char path[100],old_path[100];
printf("请输入文件路径:\\n");
gets(path);
strcpy(old_path,path);
FILE *fp_in;
FILE *fp_out;
fp_in=fopen(path,"rt");
fp_out=fopen(strcat(path,".bak"),"wt");
if(!fp_in||!fp_out)
printf("File open error!");
char src[100],dst[100];
printf("请输入要替换的源串:\\n");
gets(src);
printf("请输入要替换的目的串:\\n");
gets(dst);
file_replace(fp_in,fp_out,src,dst);
fclose(fp_in);
fclose(fp_out);
char cmd[200]="copy ";
strcat(cmd,path);
strcat(cmd," ");
strcat(cmd,old_path);
system(cmd);
memset(cmd,0,200);
strcat(cmd,"del ");
strcat(cmd,path);
system(cmd);
参考技术A
1、打开文件,遍历文件内容然后一个一个匹配查找并替换,最后再重新写入文件当中。
2、例程:
int main()
FILE *fp;
char filename[100];
printf("请输入文件名:\\n");
gets(filename);
fp=fopen(filename,"r");
char c,x,flag=0;
printf("请输入要查找的字符:\\n");
scanf("%c",&x);
while(fscanf(fp,"%c",&c)!=EOF)
if(c==x)
flag=1;
break;
if(flag==1)
printf("文件中含有字符%c\\n",x);
else
printf("文件中没有字符%c\\n",x);
return 0;
参考技术B #include <stdio.h>
#include <stdlib.h>
int main()
FILE *fp1,*fp2; //声明文件指针变量名
char del;
int i;
printf("\n1.txt为原始文件.");
printf("2.txt为替换文件.\n");
printf("\n按 ENTER 键继续!\n");
getchar(); //键盘读入字符
if((fp1=fopen("1.txt","r+"))==NULL) //打开原始文件1.txt,将其赋给了文件指针fp1,并判断文件指针fp1是否为NULL
printf(" 1.txt 打开失败!\n");
exit(0); //终止程序
if((fp2=fopen("2.txt","w+"))==NULL) //打开原始文件2.txt,将其赋给了文件指 针fp2,并判断文件指针fp2是否为NULL
printf(" 2.txt 打开失败!\n");
exit(0); //终止程序
while((del=fgetc(fp1))!=EOF) //如果文件fp1读入结束,结束循环
if(del=='\n') //回车
i=fputc(' ',fp2); //空格
if(i==-1) printf("写入2.txt失败!\n");
else
i=fputc(del,fp2); //空格替换回车
if(i==-1) printf("写入2.txt失败!\n");
return 0;
追问
大神,还是运行不了,再给看看吧。你也运行下吧
....
...
c(35) : error C2018: unknown character '0xa1'
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\W002M\W002M.c(35) : error C2018: unknown character '0xa1'
执行 cl.exe 时出错.
W002M.exe - 1 error(s), 0 warning(s)
#include
#include
int main()
FILE *fp1,*fp2; //声明文件指针变量名
char del;
int i;
printf("\n1.txt为原始文件.");
printf("2.txt为替换文件.\n");
printf("\n按 ENTER 键继续!\n");
getchar(); //键盘读入字符
if((fp1=fopen("1.txt","r+"))==NULL) //打开原始文件1.txt,将其赋给了文件指针fp1,并判断文件指针fp1是否为NULL
printf(" 1.txt 打开失败!\n");
exit(0); //终止程序
if((fp2=fopen("2.txt","w+"))==NULL) //打开原始文件2.txt,将其赋给了文件指 针fp2,并判断文件指针fp2是否为NULL
printf(" 2.txt 打开失败!\n");
exit(0); //终止程序
while((del=fgetc(fp1))!=EOF) //如果文件fp1读入结束,结束循环
if(del=='\n') //回车
i=fputc(' ',fp2); //空格
if(i==-1) printf("写入2.txt失败!\n");
else
i=fputc(del,fp2); //空格替换回车
if(i==-1) printf("写入2.txt失败!\n");
return 0;
代码行末尾有空格,现在应该可以了
以上是关于C++实现txt文件中的查找与替换功能的主要内容,如果未能解决你的问题,请参考以下文章