串的查找和替换 问题描述:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。用c语言写代码
时间: 2024-02-19 15:02:32 浏览: 192
好的,以下是一个基本的C语言实现。需要注意的是,这个代码实现没有考虑单词边界和大小写问题,你可以根据需要进行修改和完善。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 1024
int main() {
char file_name[256]; // 存放文件名的数组
char buf[BUF_SIZE]; // 存放读取到的文件内容的数组
char word[256]; // 存放要查找和替换的单词的数组
char replace[256]; // 存放要替换成的单词的数组
char *p; // 用于存放查找到的单词的指针
int len1, len2; // 分别存放要查找和替换的单词的长度
int replace_count = 0; // 统计替换的次数
FILE *fp_in, *fp_out; // 文件指针
// 输入文件名、要查找和替换的单词、替换成的单词
printf("请输入文件名:");
scanf("%s", file_name);
printf("请输入要查找的单词:");
scanf("%s", word);
printf("请输入要替换成的单词:");
scanf("%s", replace);
// 计算要查找和替换的单词的长度
len1 = strlen(word);
len2 = strlen(replace);
// 打开文件
if ((fp_in = fopen(file_name, "r")) == NULL) {
printf("无法打开文件 %s\n", file_name);
exit(1);
}
// 创建输出文件
if ((fp_out = fopen("output.txt", "w")) == NULL) {
printf("无法创建输出文件\n");
exit(1);
}
// 读取文件内容并替换单词,写入到输出文件中
while (fgets(buf, BUF_SIZE, fp_in) != NULL) {
// 查找单词并替换
while ((p = strstr(buf, word)) != NULL) {
replace_count++;
strncpy(p, replace, len2);
memmove(p + len2, p + len1, strlen(p + len1) + 1);
}
// 写入到输出文件中
fputs(buf, fp_out);
}
// 关闭文件
fclose(fp_in);
fclose(fp_out);
// 输出替换的结果
printf("共替换了 %d 个单词\n", replace_count);
return 0;
}
```
这个代码实现的基本思路是:打开文件、读取文件内容、查找单词并替换、写入到输出文件中、关闭文件。其中,查找单词并替换的部分使用了字符串处理函数strstr()、strncpy()和memmove()。
阅读全文