Не удается выделить память для структуры, ошибка: запрос члена «****» в чем-то, что не является структурой или объединением

Я недавно делаю домашнее задание в школе, и я застрял в создании динамического массива структур. Я искал везде, но ни один ответ не помог мне, поэтому не могли бы вы взглянуть на мой код и помочь мне, что не так? Я продолжаю получать сообщение об ошибке: C:\kof\test1\main.c|29|ошибка: запрос длины члена в чем-то, что не является структурой или объединением|

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct time
{
int mi;
int ho;
int dn;
int me;
int ro;
};

struct journey
{
int lenght;
struct time zac;
struct time kon;
int tank;
int price;
};


int main ()
{
struct journey *fail;
struct journey *b=(struct journey*) malloc (1*sizeof(struct journey));
fail=b;
fail.lenght=5;
return 0;
}

person fBfX    schedule 21.12.2013    source источник
comment
вероятно, lenght должно быть length, хотя в том, что вы здесь публикуете, у вас дважды опечатка   -  person Jens Gustedt    schedule 21.12.2013
comment
Вам нужно прочитать о разнице между операторами . и ->. Проверьте, например. эта ссылка на доступ для участников.   -  person Some programmer dude    schedule 21.12.2013
comment
lOl, спасибо, Иоахим, это действительно помогло :D Теперь я чувствую себя таким глупым, но и немного умнее:D Кстати. с распределением памяти все в порядке? Я не уверен, все еще новичок в области динамической памяти: D   -  person fBfX    schedule 21.12.2013
comment
Распределение в порядке, но умножать на единицу бессмысленно. Кроме того, в C вы не должны приводить возвращаемое значение функций, возвращающих void * (как это делает malloc). И, конечно же, перед использованием указателя вы должны убедиться, что выделение действительно выполнено.   -  person Some programmer dude    schedule 21.12.2013


Ответы (1)


Поскольку *fail является указателем типа struct travel, вы получаете доступ к его элементам, используя нотацию ->, а не нотацию ., как указано здесь

person alphacentauri    schedule 21.12.2013