c-为什么这个字符会出现分段错误



所以我开始学习C,试着制作一个小程序来学习结构。它要求两个";玩家";输入他们的姓名和年龄,然后将其显示回来。

当我运行它时,在输入第二个玩家的姓氏后,我会出现分段错误。我不明白为什么。

我尝试在gdb中运行它,得到以下消息:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7e5288c in _IO_vfscanf () from /lib/x86_64-linux-gnu/libc.so.6

这是我的代码struct.c:

#include "struct.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
Person player[1];
int i = 0;
for (i = 0; i < 2; i++) {
printf("n=== Player %d ===n", i+1);
printf("First name : ");
scanf("%s", player[i].firstName);
printf("Last name : ");
scanf("%s", player[i].lastName);
printf("Age : ");
scanf("%d", &player[i].age);
}
for (i = 0 ; i < 2; i++) {
printf("n=== Player %d ===n", i+1);
printf("%s %s, %d years old", player[i].firstName, player[i].lastName, player[i].age);
}
return 0;
}

这是标题,struct.h:

#ifndef DEF_STRUCT
#define DEF_STRUCT
#define CHAR_SIZE 100
typedef struct Person Person;
struct Person {
char firstName[CHAR_SIZE];
char lastName[CHAR_SIZE];
int age; 
};
#endif

谢谢!

就像人们在评论中告诉我的那样,我用Person player[2]替换了Person player[1]

它现在起作用了。

相关内容

  • 没有找到相关文章

最新更新