C语言初学者r 2023-03-23 10:53 采纳率: 91.7%
浏览 65
已结题

【字符指针】【1】字符串子串提取

我写的代码有误,不知错在哪,help

img

img


题目中原码(符号@#1等效于空格,需要填入代码)

#include <stdio.h>
void substring(char *str1,char *str2,int index,int length);
main()
{   int idx,len;
    char a[200], b[200]; 
    gets(a); 
    scanf("%d%d",&idx,&len);
    substring(a,b,idx,len);
    printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
  for(p=@#1;p<=@#2;p++)
   { 
    //提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
    //即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
    //符是否用完呢?
    @@1
    
    @@1
   }
   @#3       //给str2添加结束符。
}

我自己写的代码,求修正

#include <stdio.h>
void substring(char *str1,char *str2,int index,int length);
main()
{   int idx,len;
    char a[200], b[200]; 
    gets(a); 
    scanf("%d%d",&idx,&len);
    substring(a,b,idx,len);
    printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
  for(p=str1+index;p<=str1+index+length;p++)
   {    //@#1    @#2
    //提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
    //即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
    //符是否用完呢?
    //@@1
    if(*p=='\0')
    {
        break;
    }
    int i=0;
    str2[i]=*p;
    //@@1
   }
   //@#3       //给str2添加结束符。
}

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-03-23 11:57
    关注

    这么改,供参考:

    #include <stdio.h>
    void substring(char* str1, char* str2, int index, int length);
    int  main()
    {
        int idx, len;
        char a[200], b[200];
        gets(a);
        scanf("%d%d", &idx, &len);
        substring(a, b, idx, len);
        printf("%s", b);
    }
    void substring(char* str1, char* str2, int index, int length)
    {
        char* p;
        for (p = str1 + index; p <= str1 + index + length - 1; p++)  //for (p = @#1; p <= @#2; p++)
        {
            //提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
            //即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
            //符是否用完呢?
            if (*p)          //@@1
                *str2++ = *p;
            else            //@@1
                break;    
        }
        *str2 = '\0'; //@#3  //给str2添加结束符。
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?