输入 N 后创建结构的 N 个元素

Create N elements of struct after input N

如何在输入 N 之后创建此结构的 N 个元素?

 typedef struct cat{
 int code;
 int age;
 float weight;
 enum {kibbles,canned_food,tuna_fish}food;
} cats;

int n,i;

printf("Insert a number: ");
scanf("%d",&n);


for(i=0;i<n;i++){
    ....
}

我想创建N只猫(命名为cat1,cat2等..)

创建一个函数来输入单个 struct cat

struct cat inputsinglecat(void);

知道需要多少只猫后,获取所需的内存量

struct cat *memcat;
memcat = malloc(n * sizeof *memcat);
if (memcat == NULL) exit(EXIT_FAILURE);

然后,要输入猫,请使用循环和上面定义的函数

for (int k = 0; k < n; k++) {
    memcat[k] = inputsinglecat();
}

不要忘记释放内存

free(memcat);

您可以通过创建 cats:

的数组来静态地完成它
cats myCatsArray[10];

或动态地,使用malloccalloc(后者定义为void *calloc(size_t nitems, size_t size)):

cats *myCatsArray = calloc( 10, sizeof (cats)):

只是避免将static定义为函数的局部变量,以免在栈中占用太多内存。在动态分配的情况下,您必须记住 free() 一旦不再需要这些结构。

分配完你需要的N只猫后,你就可以根据自己的要求填充它们的字段了。


在这两种情况下,您都可以通过这种方式访问​​一个元素(比方说第六个)

int myCode = myCatsArray[5].code;