gpt4 book ai didi

c - 当我运行这个程序时结构崩溃

转载 作者:行者123 更新时间:2023-11-30 20:06:15 26 4
gpt4 key购买 nike

我正在练习 C,我正在尝试创建一个包含多个元素的结构体,并循环遍历并打印出结构体中的所有数据。然而,当我运行这个程序时,我遇到了段错误。我有点困惑为什么会发生这种情况,因为我能够在没有任何警告或失败的情况下编译它,并且程序运行它最后也会崩溃。

这是我运行程序时的输出:

lnx-v1:242> ./multiArrayStruct
Records of EMPLOYEE : 1
Id is: 1
First name is: Joe
Last name is: Johnson
Employee age is 25
Records of EMPLOYEE : 2
Id is: 2
First name is: Kyle
Last name is: Korver
Employee age is 25
Records of EMPLOYEE : 3
Id is: 3
First name is: Adam
Last name is: Thompson
Employee age is 25
Segmentation fault (core dumped) <-------why is this crashing ?

这也是我的代码:

#include <stdio.h>
#include <string.h>

struct employee
{
int empId;
char empNameFirstName[20];
char empNameLastName[20];
int empAge;

};



int main()
{
struct employee record[2];

// First employee record
record[0].empId=1;
strcpy(record[0].empNameFirstName, "Joe");
strcpy(record[0].empNameLastName, "Johnson");
record[0].empAge=25;

// second employee record
record[1].empId=2;
strcpy(record[1].empNameFirstName, "Kyle");
strcpy(record[1].empNameLastName, "Korver");
record[1].empAge=25;

// third employee record
record[2].empId=3;
strcpy(record[2].empNameFirstName, "Adam");
strcpy(record[2].empNameLastName, "Thompson");
record[2].empAge=25;

for(int i = 0; i < 3;i++)
{
printf(" Records of EMPLOYEE : %d \n", i+1);
printf(" Id is: %d \n", record[i].empId);
printf(" First name is: %s \n", record[i].empNameFirstName);
printf(" Last name is: %s \n", record[i].empNameLastName);
printf(" Employee age is %d\n", record[i].empAge);

}

return 0;
}

最佳答案

您创建一个包含 2 个元素的数组:

    struct employee record[2];
^----

实际上是record[0]record[1]。但随后您尝试分配给未定义的第三个元素:

    record[2].empId=3;
^---

这意味着您正在未分配/未定义的内存空间中乱写。

关于c - 当我运行这个程序时结构崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com