在结构的“数组”中访问和分配结构的每个部分中的值?

时间:2017-10-07 05:19:48

标签: c pointers struct

所以我有一个赋值来分配足够的内存来存储一组具有不同值的结构。我只被允许一次调用malloc。

A有一个如下所示的结构:

typedef struct ObjectTag Object;
struct ObjectTag
{
    char *stringA[20];
    char *stringB[30];
    char *stringC[5];
    unsigned short num;
};

我正在做的malloc电话

Object *myObjArray;
myObjArray= (Object*)malloc(numObjects * sizeof(Object));

我正试图从一个infile获取信息到我的结构中。因此,我正在做

fscanf(inFile, " %s", (*Object)[i].stringA);
fscanf(inFile, " %s", (*Object)[i].stringB);
fscanf(inFile, " %s", (*Object)[i].stringC);
fscanf(inFile, " %hu", (*Object)[i].num);
循环中的

等等。

但是当我尝试编译时,我得到了这个错误

format '%s' expects argument of type 'char *', but argument 3 has type 'char **'

以及最后一个

format '%hu' expects argument of type 'short unsigned int *', but argument 3 has type 'int'

我不知道我做错了什么。

可能相关的注释:

  • infile有一个预期的格式
  • 我已经计算了我需要多少结构,如malloc调用中的numObjects所述

1 个答案:

答案 0 :(得分:2)

char *stringA[20]不是20(或19)个字符的字符串。它是一组20个未指定长度的字符串。你确定这是你想要的吗?