用C语言请编写一个程序,用一个单词替代给定字符串中的某个单词。例如,在文本“It is good to program in PASCAL language"中,用C将PASCAL替代掉。注意,字符串、被替换单词和替换单词都是用户输入的变量,程序要考虑通用性。
时间: 2023-06-10 20:02:31 浏览: 169
好的,以下是可以实现上述功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char text[100], word[20], replace[20];
int i, j, k, flag;
printf("请输入原始文本:");
scanf("%[^\n]s", text); //输入包含空格的字符串
printf("请输入要替换的单词:");
scanf("%s", word);
printf("请输入替换后的单词:");
scanf("%s", replace);
for(i = 0; text[i] != '\0'; i++) {
flag = 1;
for(j = i, k = 0; word[k] != '\0'; j++, k++) {
if(text[j] != word[k]) {
flag = 0;
break;
}
}
if(flag == 1 && (text[i-1] == ' ' || text[i-1] == '\0') && (text[j] == ' ' || text[j] == '\0')) { //判断要替换的单词出现的条件
for(k = 0; replace[k] != '\0'; k++, i++) {
text[i] = replace[k];
}
i--;
}
}
printf("替换后的文本为:%s\n", text);
return 0;
}
```
该程序首先定义了三个字符数组变量`text`、`word`和`replace`,分别存储原始文本、要替换的单词和替换后的单词。然后使用`scanf`函数获取用户输入的三个变量的值。
接下来,使用两层循环遍历整个原始文本,依次匹配每一个单词。其中,外层循环变量`i`表示遍历到的字符位置,内层循环变量`j`和`k`分别表示当前匹配到的位置。当匹配到要替换的单词时,使用`if`语句判断该单词出现的条件,然后使用一个`for`循环将替换后的单词插入到原始文本中。由于可能存在多个相同的要替换的单词,所以内层循环结束时,将外层循环变量`i`减一,以便检测到下一个相同单词的出现。
最后,使用`printf`函数输出替换后的文本。
希望能够帮助到你!
阅读全文