[英]Typedef struct causes program to crash
我正在尝试使结构数组入队,但是每当我尝试向其中插入信息时它就会崩溃。
结构本身看起来像这样:
typedef struct {
char first_name;
char last_name;
char pers_nbr;
} person;
该函数如下所示:
void enqueue(person pers)
{
strcpy(queue[tail].first_name, pers.first_name);
strcpy(queue[tail].last_name, pers.last_name);
strcpy(queue[tail].pers_nbr, pers.pers_nbr);
tail = (tail+1) % QUEUE_MAX_SIZE;
nbr_elem++;
}
我一直在调试,它在第一个strcpy崩溃,并返回错误“访问冲突读取位置”。 问题似乎与pers对象有关。
这是我一直尝试插入数据的方式:
person test;
test.first_name = "John";
test.last_name = "Doe";
test.pers_nbr = "A";
enqueue(test);
是什么原因导致此崩溃,如何预防?
当你声明一个像
char first_name;
这意味着一个字符有空间
你应该使用字符数组来保存字符串
char first_name[64];
和
person test;
test.first_name = "John";
不是初始化字符串或结构的正确方法,如在声明中进行操作或像以前一样手动对字符串进行strcpy:
person test = { "John", "Doe", "A" };
为了存储字符串,结构中的char类型应该为char *,否则它们仅存储单个字符。 此外,应为其分配空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.