唐僧爱吃唐僧肉 2017-04-25 09:23 采纳率: 16.7%
浏览 1098

妹子不知道程序错在哪里了,求大神帮帮忙啊

用函数编程实现计算字符串中子串出现的次数。
函数原型:
int FindString(char *str,char *sub)
要求:
在主函数中输入字符串和子串,调用FindString()函数,输出子串出现的次数。
妹子的程序:
#include
#include
int FindString(char *str,char *sub);
#define N 100
int main()
{
char a[N],b[N],i;
printf("输入字符串:");
gets(a);
printf("输入子字符串:");
gets(b);
i=FindString(a,b);
printf("重复%d次:",i);
}
int FindString(char *str,char *sub)
{
char b[N];
int n=0;//n记录重复的次数;
while(*str!='\0')
{
sub=&b[0];//如果在下面第二个while中读取一半子字符串与主字符串不相等
while(*str!=*sub)//的情况发生时 ,需要让指针指向子字符串的第一个地址接着查找;
{
str++;//不相等时str继续向后读取下标
}
while(*sub!='\0'&&*str==*sub)
{
str++;
sub++;//相等时接着验证后续字符是否相等
}
if(*sub=='\0')//读取完毕说明有相同的子字符串
{
n++;
sub=&b[0];//还原子字符串便于接下来的验证;
}
}
return n;
}
接收不了正确的结果啊?求大神帮帮忙指点一下/

  • 写回答

6条回答 默认 最新

  • hellolaozhu 2017-04-25 10:02
    关注

    我也是初学者,我认为错误在这i=FindString(a,b);
    您声明的函数输入参数是指针,这里的输入却不是,
    我觉得可以尝试改为i=FindString(&a,&b);
    初学者,回答有问题希望您不吝指正。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器