编写一个程序,输入两个字符串 s1 和 s2 ,判断 s2 是否是 s1 的子串,如果是,则输出 s2 在 s1 中的起始位置。否则输出 0 输入:两个字符串 s1 和 s2 输出:s2 在 s1 中的起始位置 或者 输出 0 例如: 输入:helloworld world 输出:6
时间: 2024-02-25 21:56:43 浏览: 55
【面向对象的程序设计c++】输入两个字符串,检测第二个字符串是否是第一个字符串的子字符串。
好的,以下是判断 s2 是否为 s1 子串的代码实现:
```c
#include <stdio.h>
#include <string.h>
int find_substring(const char *s1, const char *s2) {
char *p = strstr(s1, s2); // 在 s1 中查找 s2 的位置
if (p) {
return p - s1 + 1; // 返回 s2 在 s1 中的起始位置
} else {
return 0; // 如果 s2 不是 s1 的子串,返回 0
}
}
int main() {
char s1[] = "helloworld";
char s2[] = "world";
int pos = find_substring(s1, s2);
if (pos) {
printf("%s is a substring of %s, at position %d\n", s2, s1, pos);
} else {
printf("%s is not a substring of %s\n", s2, s1);
}
return 0;
}
```
输出结果为:
```
world is a substring of helloworld, at position 6
```
函数 `find_substring` 的实现是使用了标准库函数 `strstr`,它返回 s2 在 s1 中第一次出现的位置的指针。如果找到了 s2,则返回 s2 在 s1 中的起始位置;否则返回 0。需要注意的是,返回的位置从 1 开始计数,而不是从 0 开始。
阅读全文