C 错误分段故障(堆芯转储)

C 错误分段故障(堆芯转储),c,C,我正在努力实现这一点- struct Car { int registrationNo; char name[100]; }; struct ParkingLot { int ID; struct Car *C; }Park; void Enter_ParkingLot() { Park.ID++; int ID=Park.ID; printf("Enter registraiotn no\n"); scanf("%d",&(Park.C+

我正在努力实现这一点-

 struct Car
 {
  int registrationNo;
  char name[100];
 };

struct ParkingLot
 {
  int ID;
  struct Car *C;

 }Park;
void Enter_ParkingLot()
 {
  Park.ID++;
  int ID=Park.ID;
  printf("Enter registraiotn no\n");
  scanf("%d",&(Park.C+ID)->registrationNo);
 }
int main()
 {
  Park.ID=-1;
  Enter_ParkingLot();
  return 0;
 }
但是我得到了这个错误-
分段故障(堆芯转储)

我认为scanf语句有问题。

您从来没有为
Park.C

分配内存,您从来没有初始化过
Park.C
,所以指针毫无疑问指向了某个随机/垃圾位置,然后您就开始戳它。请……请……不要再问这些问题了!这已经被问死了。我怎么做-
Park.C=(Car*)malloc(sizeof(Car))
这给了我语法错误。@Coder:那是因为类型名为
struct Car
,而不是
Car
。这更为健壮:
Park.C=malloc(sizeof*Park.C),因为您不必重复类型名称。请发布您得到的确切错误。你也包括stdlib吗?@KeithThompson即使这样做了,
Park.C+ID
也会在游戏结束时消失buffer@MattMcNabb:对,我的代码只分配了一个
struct-Car
对象,但您需要它们的数组<代码>Park.C=malloc(N*sizeof*Park.C)。确定
N
留作练习。(如果我们不知道会有多少辆车进来,我们可能需要
realloc
,但这可能超出了问题的范围。)