c - 右对齐另一个struct内部的struct内部的int

时间:2015-05-20 06:21:02

标签: c arrays pointers struct

如何从结构中的结构中打印出某些内容。我想打印出“30美元”。我得到了分段错误。

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 个答案:

答案 0 :(得分:1)

a_t *storage = NULL;

对于所有指针,您需要分配内存。取消引用未初始化的/ NULL指针会导致未定义的行为。

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