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
,但这可能超出了问题的范围。)