1:判断sub是否是str的子字符串
如:str: abcdefg sub: cde 是子字符串,返回1
#include<stdio.h>
#include<string.h>
int is_substring(char *str,char *sub);
int main()
{
char*str="abcdefg";
char*sub="cde";
int k=is_substring(str,sub);
printf("%d\n",k);
return 0;
}
//判断一个字符串是另外一个字符串的字符串的函数
思想:遍历str字符串,找到第一个与sub字符串相同的字符。
如果第一个都不相同,直接跳出内循环
int is_substring(char *str,char *sub)
{
int i,j;
int len1=strlen(str);
int len2=strlen(sub);
if(len1<len2)
return 0;
for(i=0;i<=len1-len2;i++)
{
for( j=0;j<len2;j++)
if(str[i+j]!=sub[j])
break;
if(j==len2)
return 1;//说明内循环遍历完了,子字符串都遍历完了
if(i==len1-len2)
return 0;
}
}
2:判断子字符串在某个字符串中的个数
#include<stdio.h>
#include<string.h>
int sub_string(char *str,char *sub);
int main()
{
char *str="abcdefgcdefcdefg";
char *sub="cde";
int k=sub_string(str,sub);
printf("%d\n",k);//输出3
return 0;
}
//查找字符串str中有多少个子串sub,并返回
int sub_string(char *str,char *sub)
{
int i,j;
int num=0;
int len1=strlen(str);
int len2=strlen(sub);
if(len1<len2)
return0;
for(i=0;i<=len1-len2;i++)
{
for(j=0;j<len2;j++)
if(str[i+j]!=sub[j])
break;
if(j==len2)//找到一次字符串
num++;
if(i==len1-len2)//遍历结束条件
return num; //返回子字符串个数
}
}