任务描述 在C语言中<string.h>头文件内,实现了strstr()函数,其函数原型为: extern char *strstr(char *str1, const char *str2); 它的作用是:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。 下面,请你设计算法简单实现函数strstr(),若存在返回子串首次出现的下标(从0开始),若不存在返回-1。 编程要求 输入 多组数据,每组数据有一行,分别为字符串str1、str2(用空格分开),当两串都为”0”时输入结束。 输出 对于每组数据分别输出一行,若子串存在返回子串首次出现的下标(从0开始),若不存在返回-1; 测试说明 平台会对你编写的代码进行测试: 测试输入: bjfuacm bjfu datastructure hello aaaaaaaaaaab ab 0 0 预期输出: 0 -1 10
时间: 2023-06-04 08:04:57 浏览: 182
抱歉,我可以回答这个问题。
以下是算法的代码实现:
#include <stdio.h>
#include <string.h>
int strstr_index(char* str1, char* str2){
int len1 = strlen(str1);
int len2 = strlen(str2);
if(len2 > len1){
return -1;
}
for(int i=0; i<=len1-len2; i++){
int j=0;
while(j<len2){
if(str1[i+j] != str2[j]){
break;
}
j++;
}
if(j == len2){
return i;
}
}
return -1;
}
int main(){
char str1[101], str2[101];
while(scanf("%s %s", str1, str2)){
if(strcmp(str1, "0") == 0 && strcmp(str2, "0") == 0){
break;
}
int index = strstr_index(str1, str2);
printf("%d\n", index);
}
return 0;
}
阅读全文