我想制作一个简单的数据库,而不需要制作动态大小的数组。我认为嵌套结构可以帮助我,但到目前为止它只是痛苦。当我开始时,这是我的想法:
#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)打印出数据。您无法使用动态数组...
答案 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
以与其他成员保持一致。类型通常是键入的AllDog
和OneDog
,以区分成员和类型。