鱼C论坛

 找回密码
 立即注册
查看: 1034|回复: 9

[已解决]字符串包含关系

[复制链接]
发表于 2021-10-12 21:42:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>
#define N 60
#define M 10000
int main()
{
        char a[N];
        int i,j,k,sum=0, flag;
        char b[M];
        int longLength, lowLength, length;
        printf("请输入一串字符串:");
                scanf("%s",&a);
               
        longLength = strlen(a);       
        printf("请输入另一串字符串:");       
                scanf("%s",&b);
    lowLength = strlen(b);
   
        for ( i = 0; i <= longLength-lowLength; i++)


        {
                if ( a[i] == b[0])
                {
                        flag = i;
                        j = i;
                        while ( a[j] == b[j - i])
                        {
                                j++;
                        }
                        if ( j == ( i + lowLength))
                        {
                                printf("该字符串存在于长字符串中,位置为%d位到%d位\n", (flag + 1), (flag + lowLength));
                                sum+=1;
                                continue;       
                        }
                }
                 
        }
       
        if(sum!=0)
        {
                return 0;
        }
        printf("该字符串不存在\n");
       
        return 0;
}
最佳答案
2021-10-13 15:55:56
本帖最后由 jhq999 于 2021-10-13 15:58 编辑

每个字符串后面都有结束标志‘\0’
而且
while ( a[j] == b[j - i])
                        {
                                j++;
                        }
循环这么写数组越界是肯定的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-12 21:45:05 | 显示全部楼层
本帖最后由 Sue. 于 2021-10-12 21:47 编辑

https://i.loli.net/2021/10/12/wcHjqQ3Vv69ZCuL.png
为什么最后一个显示不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-12 21:48:05 | 显示全部楼层

                               
登录/注册后可看大图

为啥最后一个显示不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 15:55:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2021-10-13 15:58 编辑

每个字符串后面都有结束标志‘\0’
而且
while ( a[j] == b[j - i])
                        {
                                j++;
                        }
循环这么写数组越界是肯定的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 17:13:19 | 显示全部楼层
jhq999 发表于 2021-10-13 15:55
每个字符串后面都有结束标志‘\0’
而且

能帮我修改一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 17:16:34 | 显示全部楼层
本帖最后由 jhq999 于 2021-10-13 17:17 编辑
Sue. 发表于 2021-10-13 17:13
能帮我修改一下吗

while ( a[j] == b[j - i]&&a[j]&&b[j - i])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 18:14:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 18:22:42 | 显示全部楼层

能说下a[j] == b[j - i]&&a[j]&&b[j - i]啥意思嘛没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-13 19:10:21 | 显示全部楼层
本帖最后由 jhq999 于 2021-10-13 19:12 编辑

'\0'=0=false,a[j]或b[j-i]循环到'\0',退出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-13 19:34:35 | 显示全部楼层
jhq999 发表于 2021-10-13 19:10
'\0'=0=false,a[j]或b[j-i]循环到'\0',退出循环

&&还能这么用吗
你知道在哪有这种用法的介绍吗我看看去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 15:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表