问题描述:
任意给定两个字符串str1与str2, str1与str2中可以包含任意字符。你的任务是统计字符串str2在str1中出现的次数。
如字符串str1为“asasasbbbasbas”,str2为“as”,则统计结果为5。注意如果字符串str1为“aaaaa”,字符串str2为“aaa”,则统计结果为3。
输入与输出要求:
输入两个长度不超过100的字符串,以换行符结束。输出统计次数,占一行。
程序运行效果:
dhd dhdhdfg dhd dh zx67 dhd mklodhdh↙
dhd↙
6↙
#include
#include
int main()
{
int i, count;
char str1[102], str2[102], s1, *s2, *str;
s1=(char)malloc(102);
s2=(char*)malloc(102);
str=(char*)malloc(102);
fgets(str1,102,stdin);
for(i=0;str1[i]!='\n';i++)//统计str1中的字符个数
{
}
str1[i]='\0';//将str1中的最后一个'\n'转化成'\0'
fgets(str2,102,stdin);
for(i=0;str2[i]!='\n';i++)//统计str2中的字符个数
{
}
str2[i]='\0';//将str2中的最后一个'\n'转化成'\0'
count=0;//count的初始化
str=str1;//将str1的字符放入str中,能够让下面操作直接用str++
while(*str!='\0')
{
s1=str;//s1为str的当前判断字符
s2=str2;//s2为str2的首字符
while(*s1==*s2&&*s2!='\0')//判断两个字符串的每个字符是否相等,若相等且s2并未结束则各往后读一位字符
{
s1++;
s2++;
}
if(*s2=='\0')//跳出while循环时s2已经结束了则满足条件
{
count++;//若满足条件count加一
}
str++;
}
printf("%d", count);
free(s1);
free(s2);
free(str);
return 0;
}