C语言求子字符串出现次数有些问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:11:00
#include "string.h"
#include "stdio.h"
main()
{ char str1[20],str2[20],*p1,*p2;
int sum=0;
printf("请输入二个字符串!\n");
scanf("%s%s",str1,str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1==*p2)
{while(*p1==*p2&&*p2!='\0')
{p1++;
p2++;}
}
else
p1++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("第二个字符串在第一个字符串中出现的次数为%d!",sum);
getchar();
}
这个程序是如何判断子字符串出现次数的不太明白,谁能帮下,谢谢了。

建议你用strstr()函数处理,可以写得很简单明了。
功 能: 在串中查找指定字符串的第一次出现,返回首次出现位置的地址,若 没没有,返回NULL。
用 法: char *strstr(char *str1, char *str2);

源程序:
#include<stdio.h>
#include<string.h>
void main()
{char str1[2000],str2[2000],*p1,*p2;
int sum=0,i;
printf("请输入二个字符串!\n");
scanf("%s%s",str1,str2);
p1=str1;
p2=str2;
while(strstr(p1,p2)!=NULL) //判断有无出现
{
sum++; //有的话,次数加1
p1=strstr(p1,p2)+1; //取出现位置首地址加1形成新的串,再判断
}
printf("第二个字符串在第一个字符串中出现的次数为%d!\n",sum);
}

#include "string.h"
#include "stdio.h"
main()
{ char str1[20],str2[20],*p1,*p2;
int sum=0;
printf("请输入二个字符串!\n");
scanf("%s%s",str1,str2);//字符串输入
p1=str1;p2=str2;//指针分别指向两串
while(*p1!='\0')//如果没有到结束标记就循环
{
if(*p1==*p2)//如果有相同字符了
{
while(*p1==*p2&&*p2

C/C++语言 计算字符串中子字符串出现的次数 求助:用c语言编程 统计输入的一个字符串中各字母出现的次数 想寻求一个C语言程序 计算字符串中子串出现的次数 js问题:求字符串中某个字符(或某个子串)出现的次数的方法? (C语言编程题)统计所输入的字符串的长度和某个字符出现的次数。 C语言,用户输入三个字符串,求这三个字符串的最长公共子串,并输出。 用c语言编写一个程序,用于接收一个字符串,并统计某字符在该 字符串中出现的次数 用C语言编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数 vb程序如何判断一个子字符串在一个字符串中出现的次数??? C语言(不是C#)实现获得子字符串