编写C++程序统计子字符串出现在母字符串中的个数。
用C++编写一个函数intfun(char*str,char*substr),该函数可以统计子字符串substr在母字符串str中出现的次数,并将该次数作为函数值返回。例...
用C++编写一个函数int fun( char *str, char *substr) ,该函数可以统计子字符串substr在母字符串str中出现的次数,并将该次数作为函数值返回。例如,输入的母字符串为asd asasdfg asd as zx67, 输入的子字符串为as,则as出现在母串中的次数应为5。要求在主函数中分别输入母串和子串,并将它们作为实际参数调用函数fun,同时将结果在主函数中输出。
展开
2个回答
展开全部
#include "stdafx.h"
#include "stdio.h"
#include <string.h>
int main()
{
char str[256],substr[256];
int count = 0;
printf("请输入字符串:");
scanf("%s",str);
printf("请输入子字符串:");
scanf("%s",substr);
count = findSubString(str,substr);
printf("%s出现在%s中的次数为:%d",substr,str,count);
getchar();
getchar();
return 0;
}
int findSubString(char *str,char *substr)
{
int substrLen =0,totalStrLen=0,cursor=0,count=0;
while(*str!='\0')
{
totalStrLen++;
str++;
}
str = str-totalStrLen;
while (*substr!='\0')
{
substrLen++;
substr++;
}
substr= substr-substrLen;
char *strVal = new char[substrLen+1];
strVal[substrLen]='\0';
while ((cursor+substrLen) < totalStrLen)
{
memcpy(strVal,str+cursor,substrLen);
if(strcmp(substr,strVal)==0)
{
count ++;
cursor += substrLen;
}
else
cursor++;
}
delete[] strVal;
return count;
}
#include "stdio.h"
#include <string.h>
int main()
{
char str[256],substr[256];
int count = 0;
printf("请输入字符串:");
scanf("%s",str);
printf("请输入子字符串:");
scanf("%s",substr);
count = findSubString(str,substr);
printf("%s出现在%s中的次数为:%d",substr,str,count);
getchar();
getchar();
return 0;
}
int findSubString(char *str,char *substr)
{
int substrLen =0,totalStrLen=0,cursor=0,count=0;
while(*str!='\0')
{
totalStrLen++;
str++;
}
str = str-totalStrLen;
while (*substr!='\0')
{
substrLen++;
substr++;
}
substr= substr-substrLen;
char *strVal = new char[substrLen+1];
strVal[substrLen]='\0';
while ((cursor+substrLen) < totalStrLen)
{
memcpy(strVal,str+cursor,substrLen);
if(strcmp(substr,strVal)==0)
{
count ++;
cursor += substrLen;
}
else
cursor++;
}
delete[] strVal;
return count;
}
更多追问追答
追问
这是C语言的吧,我问的是C++的哦!!!好像不是很同哦……
追答
根据这个改写为c++的应该很好改的呢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询