【问题标题】:C - Copy string into a linked list variableC - 将字符串复制到链表变量中
【发布时间】:2010-10-05 02:33:09
【问题描述】:
#define STRLEN 65

/*Create linked list */
struct node {
   char str[STRLEN];
   struct node *next;
};

newInput = malloc(sizeof(struct node));
strcpy(newStr, newInput->str);

我留下了代码的其他部分,但它似乎没有将字符串复制到 newInput->str 中。

接受的字符串只有 64 个字节。

复印后打印出来就是空白。有什么线索吗?

【问题讨论】:

    标签: c string linked-list


    【解决方案1】:

    strcpy 的参数颠倒了,第一个参数是目标,第二个参数是源。试试:

    strcpy(newInput->str, newStr);
    

    【讨论】:

    • 或者更好,strncpy(newInput->str, newStr, STRLEN);
    • strncpy 是此处使用的错误函数。它将剩余的大小填充为零,这是浪费时间,如果newStr 比目标大小长,它不会以空值终止。 永远不要使用strncpy,除非你真的知道它的用途。
    【解决方案2】:

    你对 strcpy 的论点被颠倒了。

    【讨论】:

      【解决方案3】:

      strcpy的第一个参数是目标,第二个参数是源。

      所以

      strcpy(newStr, newInput->str);
      

      应该是

      strcpy(newInput->str,newStr);
      

      【讨论】:

        【解决方案4】:

        你的目的地和来源是倒退的:

        strcpy(newStr, newInput->str);
        

        应该是

        strcpy(newInput->str, newStr);
        

        【讨论】:

          猜你喜欢
          • 2020-08-02
          • 1970-01-01
          • 1970-01-01
          • 2022-01-21
          • 1970-01-01
          • 2013-02-12
          • 2015-03-28
          • 1970-01-01
          • 2018-01-28
          相关资源
          最近更新 更多