FindSameStringbyindex(char* s, char* t, int index);
此函数的作用
s字符串的长度必须大于t字符串的长度,
从下标index开始查找,若s字符串的index下标后,包含有t字符串,
则返回t字符串在s字符串中第一个字符的下标,否则返回-1
C 库函数 size_t strlen(const char *str)
计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
该函数返回字符串的长度。
其他自定义函数,注释里我写了说明
函数实现与结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void substring(char* s, char* t, char* temp, int index);//从s字符串的下标index开始,复制字符串t的长度(strlen(t))个字符到temp
int strcomepare(char* s, char* t);//比较s和t相同返回1,不相同返回0;
int FindSameStringbyindex(char* s, char* t, int index);//s字符串的长度必须大于t
int main()
{
char h[100] = "sfsfsfsacafafafiiiiiiiii";
char e[10]="acafafaf";
//substring(h, e, m, 4);
int index=FindSameStringbyindex(h, e, 3);
printf("%d", index);
return 0;
}
void substring(char *s, char *t,char *temp, int index)
{
if (s == NULL || t == NULL || index < 0)
return;
int len = strlen(t);
int j = index;
for (int i = 0; i < len; i++)
{
temp[i] = s[j];
j++;
}
}
int strcomepare(char* s, char* t)
{
if (s == NULL || t == NULL)
return 0;
int s_len = strlen(s);
int t_len = strlen(t);
if (s_len != t_len)
return 0;
for (int i = 0; i < s_len; i++)
{
if (s[i] != t[i])
return 0;
}
return 1;
};
int FindSameStringbyindex(char* s, char* t, int index)
{
//参数合法性检测
if (s == NULL || t == NULL)
return -1;
int s_len = strlen(s);
int t_len = strlen(t);
int i = index;
while (s_len-1-i+1>=t_len)
{
char temp[1000] = "";
substring( s, t,temp, i);//从s字符串的index位,复制字符串t的长度个字符到temp
if (strcomepare(t,temp))
return i;
i++;
}
return -1;
};
可以看到h字符串是"sfsfsfsacafafafiiiiiiiii";
e是"acafafaf",所以h字符串在下标7位置后包含了字符串e(下标从零开始的哦)
所以输出index为7;
这是我练习数据结构的代码,用的是Microsoft Visual Studio,其他编译器把#define _CRT_SECURE_NO_WARNINGS这句删了就行
如有错误欢迎在评论区指正