c语言编程。查找子串:输入两个字符串 s 和 t,在字符串 s 中查找子串 t,输出起始位置,若不存在,则输出-1。要求自定义函数 char *search(char *s, char *t)返回子串 t 的首地址,若未找到,则返回 NULL。
时间: 2023-12-10 18:40:24 浏览: 248
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
char *search(char *s, char *t);
int main()
{
char s[100], t[100];
int pos;
printf("请输入字符串 s:");
gets(s);
printf("请输入字符串 t:");
gets(t);
pos = search(s, t) - s;
if (pos >= 0 && pos < strlen(s))
printf("子串 t 在字符串 s 的起始位置为:%d\n", pos);
else
printf("子串 t 不存在于字符串 s 中。\n");
return 0;
}
char *search(char *s, char *t)
{
int len_s = strlen(s);
int len_t = strlen(t);
if (len_t > len_s)
return NULL;
int i, j;
for (i = 0; i <= len_s - len_t; i++)
{
for (j = 0; j < len_t; j++)
{
if (s[i+j] != t[j])
break;
}
if (j == len_t)
return s+i;
}
return NULL;
}
```
其中,主函数中输入两个字符串 s 和 t,调用 search 函数查找子串 t 在字符串 s 中的起始位置,若不存在则输出 -1。而 search 函数则是遍历字符串 s 中的所有可能的子串,查找是否与字符串 t 相同,若相同则返回该子串的首地址。注意,在返回位置时,需要将返回值减去字符串 s 的首地址,才是该子串在字符串 s 中的位置。
阅读全文