Итак, я пытаюсь создать карту для своего класса, я практиковал себя, пытаясь реализовать вложенный цикл, чтобы увидеть, беру ли я «NewYork ---- 250 км ---- «LosAngeles», я должен был бы дать NewYork как прежнее название города и LosAngeles в качестве следующего названия города. Расстояние составляет 250 км. Я беру память для названия города, дороги и города, но после того, как я печатаю с клавиатуры для части «next_city», я получаю segfault. Может кто-то, пожалуйста, помогите мне, что я делаю неправильно?Выделение памяти для вложенной структуры, segfault
typedef struct road road;
typedef struct city city;
struct city{
int visited;
int distance;
int path;
char *city_name;
};
struct road{
int km;
struct city *next_city, *previous_city;
};
int main()
{
char *a=malloc(sizeof(char)*10);
char *b=malloc(sizeof(char)*10);
city *NewYork = malloc(sizeof(city));
NewYork->city_name = fgets(a,10,stdin); //this gives no error
road *ROAD = malloc(sizeof(road));
city *next_city = malloc(sizeof(city)); //to see if I can get a memory for LosAngeles
ROAD->next_city->city_name = fgets(b,10,stdin); //but here it gives a segfault after I type the name to terminal..
}
Как я должен это работать, мой мозг не работает правильно знаю, поэтому можете ли вы объяснить более подробно – Karavana
@ user1128905 вы выделили память для структуры 'путь', но не для внутреннего указателя, который вы пытаетесь назначить в. –
@ user1128905 также, программирование лучше всего сделать с четкой головой. То, что вы напишете через 2 часа, вы, вероятно, сможете сделать через 5 минут завтра утром, когда ваш мозг функционирует :) –