在C中结合Struct + malloc

时间:2014-12-11 11:57:55

标签: c struct malloc

我正在尝试基于结构创建一个malloc。

结构如下所示:

    struct shirts
        {
        char color[10];
        int size;
        };

struct shirts* ptr_shirts;

然后我想制作x量的T恤,所以我有一个变量:

printf("How many T-shirts? ");
            scanf("%d",&amount);
            getchar();
            ptr_shirts = (struct shirts *)malloc(amount * sizeof(struct shirts));

然后我想填补空格,但我不知道该怎么做。我试图使用for循环并输入值,就像它是一个数组:

for(i = 0; i<amount;i++)
            {
            printf("Color on T-shirt nr %d: ",(i+1));
            scanf_s("%s", "what to type here" ,sizeof(ptr_shirts->color));
            printf("Size on T-shirt nr %d: ",(i+1));
            scanf("%d",&"what to type here");
            }

我试过

ptr_shirts[i].size
ptr_shirts->size[i]
(ptr_shirts.size 
and then ptr_shirts++)

但我不知道如何轻松,因为我想填补1件以上的T恤,这就是我遇到的问题

2 个答案:

答案 0 :(得分:1)

对于color数组成员,请注意scanf_s函数是非标准的(嗯,说实话,除了C11和(可选)附件B,但它还没有很好地采用),您可以将fgets()stdin一起用作“更安全”的替代方案。

如果是size成员,则应该只是:

&ptr_shirts[i].size

(即:scanf("%d", &ptr_shirts[i].size);

或者:

&(ptr_shirts + i)->size

其他一些注意事项:

答案 1 :(得分:-1)

Try This -
ptr_shirts = (struct shirts *)malloc(amount * sizeof(struct shirts));

for(i = 0; i<amount;i++)
        {
           memset (ptr_shirts[i],0,sizeof(struct shirts)); /*Assign structure variable to NULL*/
           printf("Color on T-shirt nr %d: ",(i+1));
           scanf_s("what to type here %s", ptr_shirts[i].color,_countof(ptr_shirts[i].color));
           printf("Size on T-shirt nr %d: ",(i+1));
           scanf_s("what to type here %d", ptr_shirts[i].size,_countof(ptr_shirts[i].size));
        }