m0_74127278 2022-12-08 09:54 采纳率: 92.3%
浏览 34
已结题

查找字串位置,输入两个字符串,a,b查找b是否为a的字串,输出b在a中出现的位置,不是的话输出-1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,j,count,len1,len2,k,jishu=0;
char f[50],c[50];
while(scanf("%s",f)!=EOF)
{
scanf("%s",c);
len1=strlen(f);
len2=strlen(c);
for(i=0;i<len1;i++)
{
count=0;
k=i;
for(j=0;j<len2;j++)
{
if(f[k]==c[j])
{
count++;
if(count==len2)
{
printf("%d ",k-1);
jishu++;
}
else k++;
}
}
}
if(jishu==0)
{
printf("-1");
}
printf("\n");
jishu=0;
k=0;
len1=0;len2=0;
}
return 0;
}
多组输入时,第一组正确,第二组的位置输出不对每个位置的数字都多1

  • 写回答

3条回答 默认 最新

  • a5156520 2022-12-08 10:27
    关注

    经过测试,发现把判断是否包含子串的if(count==len2)那一段移到第一个for循环后面,再把打印起始坐标的k改为i即可,修改如下:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        //  https://ask.csdn.net/questions/7856287?spm=1005.2025.3001.5141
        int i,j,count,len1,len2,k,jishu=0;
        char f[50],c[50];
        while(scanf("%s",f)!=EOF)
        {
            scanf("%s",c);
        //    printf("f=%s,c=%s\n",f,c); 
            len1=strlen(f);
            len2=strlen(c);
            for(i=0;i<len1;i++)
            {
                count=0;
                k=i;
                for(j=0;j<len2&&k<len1;j++)
                {
                    if(f[k]==c[j])
                    {
                        count++;
                        
                    }
                    k++;
                }
                if(count==len2)
                {
                    printf("%d ",i);
                    jishu++;
                }
            }
            if(jishu==0)
            {
                printf("-1");
            }
            printf("\n");
            jishu=0;
            k=0;
            len1=0;len2=0;
        }
        return 0;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月8日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行