gpt4 book ai didi

c - 不定数量结构数组的动态分配

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:45 27 4
gpt4 key购买 nike

我知道我可以通过以下方式动态分配一个包含 10 个结构的数组:

#include <stdio.h>
#include <stdlib.h>
struct studente{
long matricola;
int esami;
};
int main(){
struct studente *V;
int i;
V=malloc(10*sizeof(struct studente));
return 0;
}

但如果 vector 中包含的结构数量未定义?也就是说,如果用于填充结构的一系列数据包含在外部文件中,并且结构的数量对应于其中包含的数据集的数量?

最佳答案

也许您的代码的这种修改(但未完成)扩展会根据需要增加分配给 V 的内存:

#include <stdio.h>
#include <stdlib.h>

struct student
{
long matricola;
int esami;
};

int main()
{
int rCode=0;
struct studente *V= NULL;
int V_elements = 0;
int V_elementsUsed = 0;
...

V=malloc(10*sizeof(struct studente));
if(NULL == V)
{
fprintf(stderr, "malloc() failed.\n");
rCode=ENOMEM;
goto CLEANUP;
}
V_elements=10;

...

while(/*Read structure from file succeeds */)
{
if(V_elementsUsed == V_elements)
{
struct studente *tmp = realloc(V, (V_elements + 10) * sizeof(struct studente));
if(NULL == tmp)
{
fprintf(stderr, "realloc() failed.\n");
rCode=ENOMEM;
goto CLEANUP;
}

V=tmp;
V_elements += 10;
}

V[V_elementsUsed]./*field*/ = /*from file*/;
++V_elementsUsed;
}

...

CLEANUP:

if(V)
free(V);

return(rCode);
}

关于c - 不定数量结构数组的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com