判断字符串s1中是否包含字符串s2,用C语言
时间: 2023-10-17 10:20:38 浏览: 127
可以使用C语言中的字符串函数来判断一个字符串是否包含另一个字符串。
其中一个比较常用的函数是`strstr()`,该函数可以在一个字符串中搜索另一个字符串,并返回第一次出现该字符串的地址。如果没找到,返回NULL。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100], s2[100];
printf("Enter string s1: ");
gets(s1);
printf("Enter string s2: ");
gets(s2);
if (strstr(s1, s2) != NULL)
printf("%s is found in %s\n", s2, s1);
else
printf("%s is not found in %s\n", s2, s1);
return 0;
}
```
在上面的代码中,我们使用`gets()`函数从标准输入中读取字符串s1和s2。然后,我们使用`strstr()`函数来查找s2是否在s1中出现。如果找到了,就输出“s2 is found in s1”,否则输出“s2 is not found in s1”。
相关问题
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。 输入格式: 输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。 输出格式: 在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。 用C语言怎么写代码
答:用C语言实现此题可以采用字符串替换函数strrep,具体实现方法如下: char* strrep(char* str, char* s1, char* s2)
{
char* result;
char* str_cp = strdup(str);
char* pos = strstr(str_cp, s1);
int len = strlen(s2);
int i = 0;
while(pos != NULL)
{
for(i = 0; i < len; i++)
*(pos + i) = s2[i];
pos = strstr(str_cp, s1);
}
result = strdup(str_cp);
free(str_cp);
return result;
}
c语言 字符串s1中删除串s2里包含的所有字符
可以使用C语言中的字符串操作函数来实现这个功能。具体的做法是,遍历字符串s1中的每个字符,如果该字符不在字符串s2中,则将其添加到一个新的字符串中。最后返回这个新的字符串即可。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
char* delete_chars(char* s1, char* s2) {
char* result = (char*) malloc(strlen(s1) + 1);
int i, j, k;
int s1_len = strlen(s1);
int s2_len = strlen(s2);
int found;
for (i = 0, j = 0; i < s1_len; i++) {
found = 0;
for (k = 0; k < s2_len; k++) {
if (s1[i] == s2[k]) {
found = 1;
break;
}
}
if (!found) {
result[j++] = s1[i];
}
}
result[j] = '\0';
return result;
}
int main() {
char s1[] = "hello world";
char s2[] = "aeiou";
char* result = delete_chars(s1, s2);
printf("%s\n", result);
free(result);
return 0;
}
```
输出结果为:
```
hll wrld
```
这个程序的时间复杂度为O(n^2),可以通过使用哈希表等数据结构来优化。
阅读全文