输入一段字符串,然后在输入一串想子字符串,运行代码会找出字符串中子串的次数。
例如:输入母串dsfsdsv,子串d
得到答案2次
//输入一段字符串,然后在输入一串想子字符串,运行代码会找出字符串中子串的次数
#include <stdio.h>//头文件
#include <string.h>//头文件
int subString(char* str, char* sub)//定义叫subString函数,里面有两个字符型指针
{
int count = 0, i, j; //定义三个整形变量并赋值
for (i = 0; i < strlen(str); i++) { /*for循环strlen函数的函数原型size_t strlen( const char *string ),
功能:计算给定 字符串的(unsigned int型)长度,不包括'\0'在内,返回s的长度,不包括结束符NULL*/
for (j = 0; j < strlen(sub); j++) { //两个for循环嵌套
if (str[i + j] != sub[j]) { //if函数
break; // 出现了不同字符就退出循环
}
}
if (j == strlen(sub)) {
count++; // 退出循环后若j的值等于子串的长度,则存在子串,所以次数加一
}
}
return count;//返回count的值
}
int main(void)//主函数
{
char str[100], sub[50];//定义两个字符型数组
printf("请输入母串:");//打印一串文字
gets_s(str); /*gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:
gets(s);*/
printf("请输入子串:");
gets_s(sub);
printf("%d", subString(str, sub));//调用函数subString
return 0;
}
运行结果