当我想将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;
};
任何人都可以帮助我,我搜索并尝试了很多方法但是没有用。
答案 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
。前者可能存在缓冲区溢出。