如何设置嵌套结构的大小?

时间:2017-01-09 16:13:59

标签: c struct

我想制作一个简单的数据库,而不需要制作动态大小的数组。我认为嵌套结构可以帮助我,但到目前为止它只是痛苦。当我开始时,这是我的想法:

#include <stdio.h>
#define MAXDOG 50
#define MAXCHAR 20

    struct allDog {
        int size;
        struct oneDog[MAXDOG] {
            char dogName[MAXCHAR];
            char OwnerName[MAXCHAR];
        };
    };

我很确定我的问题是struct oneDog之后的[MAXDOG]部分,我能以某种方式给内部结构一个静态大小吗?

您可以阅读我在下面尝试的部分考试:

该计划要求Dog&amp; s&amp;然后,所有者的姓名(MAX 50)打印出数据。您无法使用动态数组...

2 个答案:

答案 0 :(得分:4)

你过度复杂 - 试试这个:

#define MAXDOG 50
#define MAXCHAR 20

typedef struct {        // struct which defines one dog
    char dogName[MAXCHAR];
    char ownerName[MAXCHAR];
} Dog;

typedef struct {        // struct which contains array of dogs
    int size;           // no of dogs in array currently
    Dog dogs[MAXDOGS];  // array of up to MAXDOGS dogs
} Dogs;

答案 1 :(得分:3)

您调整的类型不是成员,语法为:

struct allDog { // type
        int size;
        struct oneDog { // type
            char dogName[MAXCHAR];
            char OwnerName[MAXCHAR];
        } dogs[MAXDOG]; // member
    };

注意与命名上限保持一致,成员OwnerName应写成ownerName以与其他成员保持一致。类型通常是键入的AllDogOneDog,以区分成员和类型。