例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
首先我们先了解两个函数:
1.strcat用于将两个char类型链接的函数。
函数原型:extern char *strcat(char *dest,char *src);
参数:dest 目标数组指针src 源字符串指针返回值:返回指向dest的指针函数功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
注意事项:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
2.strstr函数
函数原型是char *strstr(char *str1,char *str2);
其功能是在字符串s1中从左边开始查找字符串s2,若查找成功则返回s2在s1中首次出现的位置,否则返回NULL。
想法:
我们开辟一个原字符串2倍+1大小的空间,然后用函数strstr来实现
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find_substring(char *msg, char *substring)
{
int len = strlen(msg);
char *tmp =(char*)malloc(2*len + 1); //申请空间
if (len == strlen(substring)) //首先两个字符串长度相等
{
strcpy(tmp, msg); //复制原字符串到tmp
strcat(tmp, msg); // 将msg里面放的字符串添加到tmp后面
if (strstr(tmp, substring) != NULL) //若tmp中包含substring字符串则返回1
{
return 1;
}
}
free(tmp);
return 0; //否则返回0
}
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcf";
int ret=find_substring(arr1, arr2);
printf("%d\n",ret);
system("pause");
return 0;
}