遍历一个字符串中所需要查找多个字符串出现都次数
直接参考c语言库函数strstr写。
例如输入字符串“abcdefgabcdefg”,查找字符‘c’出现的次数。查到为2次。
输入字符串“abcdefgabcdefg”,查找“cd”出现的次数,查到为2次。
!!!!配图方便理解!!!!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 1000
int find_char(char* str1,char* str2);
int main()
{
char arr1[M]={0};
printf("intput the char:\n");
scanf("%s",arr1);//aabbcc
printf("input search char:\n");
char arr2[M]={0};
scanf("%s",arr2);//b
//char *str1=arr1;//指针str指向的是arr数组首元素地址,故str++便是遍历字符
//char *str2=arr2;
int s=find_char(arr1,arr2);
if(s==-1) printf("cannot search\n");
else printf("%d\n",s);
return 0;
}
int find_char(char* str1,char* str2)
{
char* s1=str1;
char* s2=str2;
char* cur=s1;
int count=0;
if(*s1=='\0' || *s2=='\0' ) return -1;//有一个数组为空,直接return-1
while(*cur!='\0') //遍历数组arr1
{
s1=cur;//s1和cur同时指向arr1头字符str1
s2=str2;//s2同理
while(*s1!='\0' && *s2!='\0' && *s1==*s2)
{ //当遍历数组,s1和s2相等时,s1和s2同时指向下一个
s1++;
s2++;
}
if(*s2=='\0')
{
//当需要查找的字符s2遍历完了,重新指向它的头,继续循环遍历str1,每次找到找到count++
s2=str2;
count++;
}
cur++;
}
return count;
}
本人小白,旨在记录。如有意见请指正!欢迎探讨