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

Why do I get a segmentation fault with this char?

所以我开始学习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;
}

这里是 header, 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[1] 替换为 Person player[2]

现在可以使用了。