输入 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];
或动态地,使用malloc
或calloc
(后者定义为void *calloc(size_t nitems, size_t size)
):
cats *myCatsArray = calloc( 10, sizeof (cats)):
只是避免将static定义为函数的局部变量,以免在栈中占用太多内存。在动态分配的情况下,您必须记住 free()
一旦不再需要这些结构。
分配完你需要的N只猫后,你就可以根据自己的要求填充它们的字段了。
在这两种情况下,您都可以通过这种方式访问一个元素(比方说第六个)
int myCode = myCatsArray[5].code;
如何在输入 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];
或动态地,使用malloc
或calloc
(后者定义为void *calloc(size_t nitems, size_t size)
):
cats *myCatsArray = calloc( 10, sizeof (cats)):
只是避免将static定义为函数的局部变量,以免在栈中占用太多内存。在动态分配的情况下,您必须记住 free()
一旦不再需要这些结构。
分配完你需要的N只猫后,你就可以根据自己的要求填充它们的字段了。
在这两种情况下,您都可以通过这种方式访问一个元素(比方说第六个)
int myCode = myCatsArray[5].code;