2015-05-20 3 views
0

Как распечатать что-то из структуры внутри структуры. Я хочу распечатать «$ 30». Im получает ошибки сегментации.c - Правое выравнивание int внутри структуры внутри другой структуры

typedef struct { 
    int cost; 
} prod_t; 

typedef struct { 
    prod_t *c; 
} a_t; 

int 
main(int agrc, char **argv){ 
    a_t *storage = NULL; 
    char buffer[1000]; 
    storage->c->cost = 30; 

    sprintf(buffer, "$%d", storage->c->cost); 
    printf("%6s\n",buffer); 

    return 0; 
} 
+1

Почему вы используете указатели в первую очередь? – juanchopanza

+0

Заголовок вопроса и тело задают разные вопросы .... –

ответ

1
a_t *storage = NULL; 

Для всех указателей, которые необходимо выделить память. Выделение неинициализированных/NULL-указателей приводит к неопределенному поведению.

a_t *storage = malloc(sizeof(a_t)); 
a_t->c = malloc(sizeof(prod_t)); 
+0

Это не неинициализированный указатель, а указатель NULL. – immibis

+0

@immibis Спасибо, отредактировал ответ – Gopi

Смежные вопросы