.查找并替换: 在字符串中查找用户指定的单词,并将其替换为另一个用户指定的单 词。程序应考虑替换后的字符串长度,确保不发生溢出。C语言
时间: 2024-10-08 13:09:38 浏览: 36
在C语言中,查找并替换操作通常涉及到字符串处理函数,如`strstr()`用于查找子串,`strcpy()`、`strcat()`和`strlen()`等用于拼接和获取字符串长度。下面是一个简单的示例,演示如何实现这个功能:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,接收原字符串、查找的单词和替换的新单词作为参数
void replace_word(char *str, const char *find, const char *replace);
int main() {
char input[100], find_str[50], replace_str[50];
printf("请输入原始字符串: ");
fgets(input, sizeof(input), stdin); // 防止换行符
input[strcspn(input, "\n")] = '\0'; // 移除fgets留下的换行符
printf("请输入需要查找的单词: ");
fgets(find_str, sizeof(find_str), stdin);
find_str[strcspn(find_str, "\n")] = '\0';
printf("请输入替换的新单词: ");
fgets(replace_str, sizeof(replace_str), stdin);
replace_str[strcspn(replace_str, "\n")] = '\0';
replace_word(input, find_str, replace_str);
printf("替换后的字符串是: %s\n", input);
return 0;
}
// 查找并替换函数
void replace_word(char *str, const char *find, const char *replace) {
size_t find_len = strlen(find);
size_t replace_len = strlen(replace);
size_t index;
while ((index = strstr(str, find)) != NULL) { // 使用strstr查找
if (index + find_len <= strlen(str)) { // 避免越界
strncpy(index, replace, replace_len);
index += replace_len; // 移动指针到新字符的结束位置
str[index - 1] = '\0'; // 更新结束标记,防止截断其他单词
} else {
printf("警告:替换可能导致字符串溢出!\n");
break; // 如果替换会超过原长度,则停止替换
}
}
}
```
阅读全文