小菜dog
2021-10-24 01:48
采纳率: 100%
浏览 23

C语言数组指针运算,字符串提取

这些代码的意思是我输入一组字符串,中间用空格隔开,然后提取字符串

img


然后红色框的两句话我不大明白。
为什么int len=pdata-head;len是等于1呢
我的认为是len是计算出差的是几一位,然后第二个红框是逻辑左移
求大神指点迷津

图片转代码服务由CSDN问答提供 功能建议

intmain()
      ElementType datal501;
      ElementType space= 三
      ElementType *head=datas
      ElementType pdata=NULL
      printf("please input five words\n")
      gets(data)
     int spaceLen= strlen(space)
      Stack s=NULL:
     create_stack(&s);
     while(1){
           ElementTypetmpl2e]=te
            odata=strstr(head,space);
            if(pdata!=NULL)
                 intlen=pdata -head
                  s.trncpy(tmp,head,len)
                head+=len+spaceLens
                 push stack(&s. tmp,en)
           Helset
                 intlen=strlen(head)
                 trncpy(tmp,head,len)
                  push_stack(&s,tmp,len)
                 break;//最后没有空格退出
     printf("遍历整个栈:n);
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 已采纳

    pdata 是 从head地址开始找到的第一个空格的地址
    pdata-head 就是pdata与head两个地址相对的字符距离。
    至于为什么是等于1要看你输入的内容了

    比如你输入的内容是:a bcd ef
    head一开始指向a的地址
    pdata 就是从a地址处开始找到的第一个空格的地址
    pdata-head 就是a与空格之间的字符距离。len就是1
    之后第二个红框是让head右移 len+一个空格的字符长度(也就是1)的字符数距离,使head指向b的地址。
    下一次循环,pdata是从b地址处开始找到的第一个空格的地址(d之后的空格)
    pdata-head 就是b与空格之间的字符距离。len就是3了
    如有帮助,望采纳!谢谢!

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题