【问题描述】 编写一个程序,当在一个字符串中出现子串时就删除它。 【输入形式】 用户在第一行输入一个字符串,用户在第二行输入一个子串。 【输出形式】 程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。 【样例输入】 I am a boy! a 【样例输出】 I m boy! 【样例说明】 用户首先输入字符串I am a boy!,然后输出子串a,程序会寻找字符串中的子串删除它,最后 将删除后的结果输出:I#m##boy! #表示空格。c语
时间: 2024-02-26 14:57:17 浏览: 16
以下是 C 语言代码实现,可以供参考:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[1000];
char sub[100];
fgets(s, 1000, stdin); // 输入字符串
fgets(sub, 100, stdin); // 输入子串
sub[strcspn(sub, "\r\n")] = '\0'; // 去掉输入字符串中的换行符
s[strcspn(s, "\r\n")] = '\0'; // 去掉输入子串中的换行符
int len_s = strlen(s);
int len_sub = strlen(sub);
while (strstr(s, sub) != NULL) { // 循环删除子串
char *p = strstr(s, sub);
for (int i = p - s; i < len_s - len_sub; i++) {
s[i] = s[i + len_sub];
}
s[len_s - len_sub] = '\0';
len_s = strlen(s);
}
for (int i = 0; i < len_s; i++) { // 将空格替换为 #
if (s[i] == ' ') {
s[i] = '#';
}
}
printf("%s", s);
return 0;
}
```
输入样例:
```
I am a boy!
a
```
输出样例:
```
I#m##boy!
```