#include<stdio.h>
void main()
{
char a[20],b[5],*pt1,*pt2;
int i=0;
pt1=a;
pt2=b;
printf("输入字符串a:\n");
gets(a);
printf("输入字符串b:\n");
gets(b);
while(*pt1)
{
while(*pt2)//逻辑不清晰,很多情况没考虑到
if(*pt1
=*pt2)//符号不正确
{
pt1++;
pt2++;
}
else break;
if(*pt2='\0')
i++;
pt1++;
}
printf("字符串b在字符串a出现的次数:%d\n",i);
}
这是我写的代码,比较容易理解
#include<stdio.h>
void main()
{
char a[20],b[5],*pt1,*pt2;
int i,j=0;
pt1=a;
pt2=b;
printf("输入字符串a:\n");
gets(a);
printf("输入字符串b:\n");
gets(b);
for(i=0;i<20;i++)
{
if(a[i]==b[1])//这里的情况楼主没考虑清楚,比如aabcd与abcd应该比较两次,按照楼主写法比较一次就过去了
{
pt1=&a[i];//每比较一次都需要初始化
pt2=&b[1];
while((*pt1==*pt2)&&(*pt2!='0'))
{
pt1++;
pt2++;
}
if(*pt2==0)
j++;
}
}
printf("字符串b在字符串a出现的次数:%d\n",j);
}