2015-01-26 94 views
-2

我想实现这个 -错误段错误(核心转储)

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; 
} 

但我得到这个错误 - Segmentation fault (core dumped) 我觉得有什么不对的scanf声明。

+1

你从未初始化过'Park.C',所以指针无疑指向一些随机/垃圾位置,然后merilly开始拨动它。 – 2015-01-26 20:20:18

+2

拜托...拜托......这些问题都没有了!这已经被要求死亡。 – 2015-01-26 20:21:20

回答

1

您从不为Park.C分配内存。

+0

我该怎么做 - 'Park.C =(Car *)malloc(sizeof(Car));' 这是给我的语法错误。 – Coder 2015-01-26 20:27:58

+1

@Coder:这是因为这个类型被称为'struct car',而不是'Car'。这更强大:'Park.C = malloc(sizeof * Park.c);',因为您不必重复类型名称。 – 2015-01-26 20:36:05

+0

我很抱歉,但这也不起作用,给语法错误。 – Coder 2015-01-26 20:42:30