用c语言写代码:输入字符串s和字符串sub,判断字符串s中是否存在sub子串,若存在,将字符 串s中第一个sub子串的所有字符替换成'*',并输出变换后的字符串,否则输出"不存在该 子串!"。
时间: 2024-03-24 07:40:14 浏览: 28
好的,下面是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s[100], sub[100];
printf("请输入字符串s:");
scanf("%s", s);
printf("请输入子串sub:");
scanf("%s", sub);
char *p = strstr(s, sub); // 在 s 中查找 sub 子串
if (p == NULL) {
printf("不存在该子串!\n");
} else {
int len = strlen(sub);
int pos = p - s; // 得到 sub 子串在 s 中的起始位置
for (int i = pos; i < pos + len; i++) {
s[i] = '*'; // 将 sub 子串中的字符替换成 '*'
}
printf("变换后的字符串为:%s\n", s);
}
return 0;
}
```
代码中用到了 `strstr` 函数来查找子串,如果找到了子串,就可以得到子串在原字符串中的位置,然后用循环将子串中的字符替换成 '*'。如果没有找到子串,则输出提示信息。
相关问题
c语言编程:删除字符串中的子串
您好,以下是一种删除字符串中子串的 C 语言代码实现,供您参考:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000], sub[100];
int i, j, k, n, len1, len2, flag;
printf("请输入字符串:");
scanf("%[^\n]", str);
getchar();
printf("请输入要删除的子串:");
scanf("%[^\n]", sub);
len1 = strlen(str);
len2 = strlen(sub);
for (i = 0; i < len1;)
{
flag = 0;
j = 0;
k = i;
while (str[k] == sub[j] && j < len2 && k < len1)
{
j++;
k++;
}
if (j == len2)
{
flag = 1;
for (j = i; j < k - len2; j++)
{
str[j] = str[j + len2];
}
len1 = len1 - len2;
}
if (!flag)
{
i++;
}
}
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
代码实现的思路是:通过循环遍历字符串,依次比较每个字符是否为子串的第一个字符,如果是则继续比较后面的字符是否与子串匹配,如果匹配则删除子串并将原字符串中子串后面的字符向前移动,最终输出删除后的字符串。
希望能对您有所帮助!
C语言编程:删除字符串中的子串
您好,以下是一种删除字符串中子串的 C 语言代码实现,供您参考:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000], sub[100];
int i, j, k, n, len1, len2, flag;
printf("请输入字符串:");
scanf("%[^\n]", str);
getchar();
printf("请输入要删除的子串:");
scanf("%[^\n]", sub);
len1 = strlen(str);
len2 = strlen(sub);
for (i = 0; i < len1;)
{
flag = 0;
j = 0;
k = i;
while (str[k] == sub[j] && j < len2 && k < len1)
{
j++;
k++;
}
if (j == len2)
{
flag = 1;
for (j = i; j < k - len2; j++)
{
str[j] = str[j + len2];
}
len1 = len1 - len2;
}
if (!flag)
{
i++;
}
}
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
代码实现的思路是:通过循环遍历字符串,依次比较每个字符是否为子串的第一个字符,如果是则继续比较后面的字符是否与子串匹配,如果匹配则删除子串并将原字符串中子串后面的字符向前移动,最终输出删除后的字符串。
希望能对您有所帮助!