判断s2是否为s1的子串c语言
时间: 2023-08-21 11:03:33 浏览: 199
可以使用C语言中的字符串函数strstr()来判断s2是否为s1的子串。该函数的函数原型为char *strstr(const char *haystack, const char *needle),其中haystack表示要查找的字符串,needle表示要查找的子串。如果查找成功,函数返回子串在字符串中第一次出现的地址;如果查找失败,函数返回NULL。
下面是使用strstr()实现判断s2是否为s1的子串的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
printf("请输入s1和s2:");
scanf("%s%s", s1, s2);
if (strstr(s1, s2) != NULL) {
printf("s2是s1的子串\n");
} else {
printf("s2不是s1的子串\n");
}
return 0;
}
```
相关问题
用c语言写输入两个字符串s1s2判断s2是否为s1的子串
可以使用strstr函数来判断s2是否为s1的子串。该函数的原型为:
char *strstr(const char *s1, const char *s2);
其中s1是包含要查找的子串的字符串,s2是要查找的子串。如果s2是s1的子串,则该函数返回指向s1中第一个与s2匹配的位置的指针。如果s2不是s1的子串,则返回NULL指针。
下面是一个示例代码:
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
printf("请输入字符串s1:");
scanf("%s", s1);
printf("请输入字符串s2:");
scanf("%s", s2);
if (strstr(s1, s2)) {
printf("s2是s1的子串。\n");
} else {
printf("s2不是s1的子串。\n");
}
return 0;
}
注意,该代码只能判断s2是否为s1的子串,而不能判断s2是不是s1的子序列(即不要求s2必须连续出现在s1中)。如果要判断s2是不是s1的子序列,可以使用更复杂的算法,比如动态规划。
用c语言编写一个程序,输入两个字符串 s1 和 s2 ,判断 s2 是否是 s1 的子串,如果是,则输出 s2 在 s1 中的起始位置。否则输出 0
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int find_substring(char *s1, char *s2) {
/*
判断字符串 s2 是否是 s1 的子串,如果是,则返回 s2 在 s1 中的起始位置,否则返回 0
*/
char *pos = strstr(s1, s2);
if (pos != NULL) {
return pos - s1 + 1;
} else {
return 0;
}
}
int main() {
char s1[100], s2[100];
printf("请输入字符串 s1:");
scanf("%s", s1);
printf("请输入字符串 s2:");
scanf("%s", s2);
int position = find_substring(s1, s2);
if (position != 0) {
printf("%s 是 %s 的子串,起始位置为 %d\n", s2, s1, position);
} else {
printf("%s 不是 %s 的子串\n", s2, s1);
}
return 0;
}
```
使用示例:
```
请输入字符串 s1:hello, world!
请输入字符串 s2:world
world 是 hello, world! 的子串,起始位置为 8
```
希望能够帮助到你!
阅读全文