我正在尝试将结构数组排入队列,但每当我尝试向其中插入信息时它都会崩溃。
结构本身如下所示:
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" };
关于c - Typedef 结构导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325470/