用C语言实现对文档文件指定字符串的替换,并进行存档
串的查找和替换 【问题描述】:打开一篇英文文章(TXT文件),在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。
我的思路是,打开文件然后进行给定字符串与文件中进行对比,如果符合就进行修改,然后再保存到文档中。可是这只出现在屏幕上,原文档没有修改,怎么做啊。
#include "string.h"
#include "stdio.h"
void str_replace(char * cp, int n, char * str)
{
int lenofstr;
int i;
char * tmp;
lenofstr = strlen(str);
//str3比str2短,往前移动
if(lenofstr < n)
{
tmp = cp+n;
while(*tmp)
{
*(tmp-(n-lenofstr)) = *tmp; //n-lenofstr是移动的距离
tmp++;
}
*(tmp-(n-lenofstr)) = *tmp; //move '\0'
}
else
//str3比str2长,往后移动
if(lenofstr > n)
{
tmp = cp;
while(*tmp) tmp++;
while(tmp>=cp+n)
{
*(tmp+(lenofstr-n)) = *tmp;
tmp--;
}
}
strncpy(cp,str,lenofstr);
}
int main()
{
char str1[1024];
char str2[100],str3[100];
int i,len,count=0;
char c;
char *p;
printf("\n请输入要查找的字符串和用于替换的字符串(中间用空格隔开): ");
scanf("%s",str2);
scanf("%s",str3);
//read string from news.txt
FILE *file=freopen("test2.txt","r",stdin);
i=0;
c = getchar();
while(c!=EOF)
{
str1[i] = c;
i++;
c = getchar();
}
str1[i] = '\0';
//开始查找字符串str2
p = strstr(str1,str2);
while(p)
{
count++;
//每找到一个str2,就用str3来替换
str_replace(p,strlen(str2),str3);
p = p+strlen(str3);
p = strstr(p,str2);
}
printf("\ncount = %d\n",count);
printf("Result = %s\n",str1);
fprintf(file,"%s",str1);
fclose(file);
}