一个字符串s、一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO用c语言写
时间: 2024-11-09 18:19:30 浏览: 56
要在C语言中实现这个功能,你需要遍历主字符串`s`,检查是否存在子字符串`t`。如果找到匹配,就替换为指定字符或字符串`p`;如果没有找到,最后输出"No"。以下是简单的代码实现:
```c
#include <stdio.h>
#include <string.h>
// 函数用于查找并替换子串
void replace_substring(char *s, char *t, char *p) {
int i = 0;
while (i < strlen(s)) {
if (strstr(s + i, t) != NULL) { // 使用strstr查找子串
size_t index = strstr(s + i, t) - s; // 获取子串起始位置
size_t len = strlen(t); // 子串长度
strncpy(s + i, p, len); // 将子串替换为p
s[i + len] = '\0'; // 更新字符串结尾
i += len; // 移动索引到新字符串结束
} else {
i++;
}
}
// 如果没有替换操作,说明t不是s的子串
if (!strstr(s, t)) {
printf("NO\n");
}
}
int main() {
char s[100], t[100], p[100]; // 定义字符串数组
printf("请输入主字符串s: ");
fgets(s, sizeof(s), stdin);
s[strlen(s) - 1] = '\0'; // 去除fgets带来的换行符
printf("请输入子字符串t: ");
fgets(t, sizeof(t), stdin);
t[strlen(t) - 1] = '\0';
printf("请输入替换字符或字符串p: ");
fgets(p, sizeof(p), stdin);
p[strlen(p) - 1] = '\0'; // 同样去除换行符
replace_substring(s, t, p);
printf("替换后的字符串: %s", s);
return 0;
}
```
在上述代码中,`replace_substring`函数首先使用`strstr`查找子串`t`,如果找到就替换,并更新字符串`s`的位置。如果没有找到,`main`函数最后打印"No"。
阅读全文