weixin_75151975 2022-11-20 22:17 采纳率: 89.4%
浏览 7
已结题

这串c语言代码要如何修改

img


这串代码能输出字符串子串的位置数,要怎么改成输出完整的字符串同时在子串前面加上/后面加上/如果没有找到就输出原字符串

  • 写回答

2条回答 默认 最新

  • 关注

    记录字串的起始位置,输出的时候先输出/ * 即可,运行结果:

    img

    img

    代码:

    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    void query(char* str1, char* str2)
    {
        int n = 0, flag = 0;
        char* bk = str2; //保存原始字符串地址
        char* p;
        char* q;
        int index[100] = { 0 };
        int k = 0, i, j;
        int len = strlen(str1);
        
        while (*str2 != '\0')
        {
            p = str1;
            q = str2;
            while ((tolower(* p) == tolower(* q)) && (*p != '\0') && (*q != '\0'))
            {
                p++;
                q++;
            }
            if (*p == '\0')
            {
                //printf("%d", n);
                index[k++] = n; //保存下标
                flag++;
            }
            str2++;
            n++;
        }
        if (flag == 0)
            printf("%s", bk);
        else
        {
            i = 0;
    
            if (len == 1)
            {
                for (j = 0; *bk != '\0'; j++, bk++)
                {
                    if (j == index[i])
                    {
                        printf("/*%c*/", *bk);
                        i++;
                    }
                    else
                        printf("%c", *bk);
                }
            }
            else
            {
                for (j = 0; *bk != '\0'; j++, bk++)
                {
                    if (j == index[i])
                    {
                        printf("/*%c", *bk);
                        i++;
                    }
                    else if (i > 0 && j == index[i - 1] + len - 1)
                        printf("%c*/", *bk);
                    else
                        printf("%c", *bk);
                }
            }
        }
    }
    
    int main()
    {
        int n;
        char str[100000];
        char qstr[100];
        gets(str);
        gets(qstr);
        query(qstr, str);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度