将字符串插入链接列表不起作用

时间:2017-02-12 03:29:28

标签: c linked-list

当我想将String插入链表时,它会显示

  

不兼容的整数到指针转换传递' char'参数   类型' const char *&#39 ;;带上&地址[-Wint转换]    在strcpy(current->name,name1);

这里是代码

node* new_node(char name1,float num) {
  node *current = malloc(sizeof(node));
  if (current == NULL) return NULL;
  strcpy(current->name,name1);
  current->score = num;
  current->next = NULL;
  return current;
}

struct NODE {
    char name[40];
    float score;
    struct NODE *next;
};

任何人都可以帮助我,我搜索并尝试了很多方法但是没有用。

2 个答案:

答案 0 :(得分:0)

在你的函数定义中,node* new_node(char name1, float num)你得到一个char,你想要的是指向实际存储字符串的位置的指针,所以将这个定义改为node * new_node(char *name1, float num)

同时更改您可能已声明该功能的位置,即在h文件中或此文件的开头。

答案 1 :(得分:0)

这似乎是一个家庭作业问题。

无论如何,您的代码存在一些问题,例如

  • 声明的顺序错误(struct NODE在使用后声明)。这可能不在实际代码中,但如果是,请更正它。
  • 使用的是错误的类型。您在函数node中使用的是NODE而不是new_node。这本身就应该抛出编译器错误。
  • 使用按值复制并不适用于C中的数组。该函数采用类型char的第一个参数。如果只想复制一个字符,请按照建议采用其地址。否则,将类型更改为char*

     strcpy(current->name, &name1); \\ if name1 is of type char
     strcpy(current->name, name1);  \\ if name1 is of type char*
    
  • 使用strcpy代替strncpy。前者可能存在缓冲区溢出。

http://codepad.org/WPR5Piye