我正在尝试基于结构创建一个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恤,这就是我遇到的问题
答案 0 :(得分:1)
对于color
数组成员,请注意scanf_s
函数是非标准的(嗯,说实话,除了C11和(可选)附件B,但它还没有很好地采用),您可以将fgets()
与stdin
一起用作“更安全”的替代方案。
如果是size
成员,则应该只是:
&ptr_shirts[i].size
(即:scanf("%d", &ptr_shirts[i].size);
)
或者:
&(ptr_shirts + i)->size
其他一些注意事项:
malloc()
的返回值,因为它可能是NULL
答案 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));
}