C 试图在结构中设置字符串
当我试图将name设置为“Carl”时,试图找出为什么这不起作用。我得到的“strcpy函数的参数太少”,即使我有两个参数(目标,源)。当我添加第三个参数(要复制多少个字符?)时,我得到的结果是“数组类型的表达式赋值”。在使用它之前,您没有为C 试图在结构中设置字符串,c,C,当我试图将name设置为“Carl”时,试图找出为什么这不起作用。我得到的“strcpy函数的参数太少”,即使我有两个参数(目标,源)。当我添加第三个参数(要复制多少个字符?)时,我得到的结果是“数组类型的表达式赋值”。在使用它之前,您没有为curr分配内存。两种选择: 使curr指向项的一个实例: struct list_el { unsigned int data; char name[16]; char grade; struct list_el * nex
curr
分配内存。两种选择:
curr
指向项的一个实例
:
struct list_el {
unsigned int data;
char name[16];
char grade;
struct list_el * next;
};
typedef struct list_el item;
int main(int argc, char **argv) {
item *curr, *head;
//first item
curr->data = 3141592;
strcpy(curr->name, "Carl");
curr->grade = 'A';
curr->next = head;
head = curr;
malloc
/calloc
为curr
动态分配内存:
item i;
curr = &i;
然后,在使用后将其释放。通过检查其返回值来检查malloc
/calloc
是否未失败也是一个好主意。失败时,它将返回NULL
我没有收到您的错误“函数“strcpy”的参数太少”,但我可以看到您声明了一个项*curr,但从未初始化。因此我尝试更正此错误,并更新了代码,如下所示,它没有给出任何错误
curr = malloc(sizeof(*curr));
/*OR*/
curr = calloc( 1, sizeof(*curr));
#包括
#包括
#包括
结构列表{
无符号整数数据;
字符名[16];
煤焦品位;
结构列表_el*下一步;
};
类型定义结构列表项;
int main(int argc,字符**argv){
项目*curr,*head;
curr=malloc(sizeof(struct list_el));
//第一项
当前->数据=3141592;
strcpy(curr->name,“Carl”);
当前->等级='A';
当前->下一步=头部;
水头=电流;
}
我想,它会对你有用。发布一个,你在使用它之前没有为
curr
分配内存。不确定为什么编译失败,但它肯定是UB-你声明了一个指向项的指针,但没有将其初始化为实际实例。很抱歉,这将阻止eclipse为我构建我的项目…它在分配内存x后工作。感谢您的帮助!不知道为什么它在剩下的部分没有给我一个错误…你的真实代码有#include
?想法:而不是curr=malloc(sizeof(struct list_el))代码>,考虑<代码> Curr= Malc(sieof of Curr);<代码>更易于编码,出错可能性更小,易于维护。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct list_el {
unsigned int data;
char name[16];
char grade;
struct list_el * next;
};
typedef struct list_el item;
int main(int argc, char **argv) {
item *curr, *head;
curr = malloc(sizeof(struct list_el));
//first item
curr->data = 3141592;
strcpy(curr->name, "Carl");
curr->grade = 'A';
curr->next = head;
head = curr;
}