编写一个程序,输入两个字符串 s1 和 s2 ,判断 s2 是否是 s1 的子串,如果是,则输出 s2 在 s1 中的起始位置。否则输出 0,用c语言
时间: 2024-02-25 11:55:51 浏览: 118
【面向对象的程序设计c++】输入两个字符串,检测第二个字符串是否是第一个字符串的子字符串。
好的,以下是使用 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); // 查找 s2 在 s1 中的位置
if (pos != NULL) {
return pos - s1 + 1; // 计算 s2 在 s1 中的起始位置
} else {
return 0;
}
}
int main() {
char s1[100], s2[100];
printf("请输入两个字符串 s1 和 s2:\n");
scanf("%s%s", s1, s2);
int pos = find_substring(s1, s2);
if (pos != 0) {
printf("%d\n", pos);
} else {
printf("0\n");
}
return 0;
}
```
解释一下代码:使用 `<string.h>` 中的 `strstr()` 函数可以查找一个字符串在另一个字符串中的位置。如果找到,则返回指向第一个匹配字符的指针;如果没有找到,则返回 `NULL`。利用指针的减法可以计算出子串在原字符串中的起始位置。注意,C 语言中的字符串数组名本身就是指向该字符串的指针,所以可以直接传递给函数。
阅读全文