c - Typedef 结构导致程序崩溃

标签 c function struct queue typedef

我正在尝试将结构数组排入队列,但每当我尝试向其中插入信息时它都会崩溃。

结构本身如下所示:

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/

相关文章:

python - 比较两个列表(检查短列表在长列表中出现了多少次)

更改dll的内容

javascript - 有没有办法从函数内定义的变量获取信息?

Python 从列表中删除相同的值

c - C 从指向结构体第二个成员的指针获取指向结构体的指针是否合法?

将数据复制到 C 中结构内部的字符串会导致段错误

c++ - CPU 数量的增加会降低性能,CPU 负载不变并且没有通信

c - C 语言代码上的库菜单程序不起作用

c - 奇数 PIL 逊相关系数结果

c++ - 如何实现可迭代结构?