gpt4 book ai didi

c - 从文件填充动态数组

转载 作者:行者123 更新时间:2023-11-30 17:53:04 24 4
gpt4 key购买 nike

您好,我在从文件填充数组时遇到问题。我第一次运行 nacitaj 函数时效果很好。但当我再调用一次之后,输出值就变得疯狂了。有没有办法告诉程序在多次调用 nacitaj 函数后覆盖 suma[] 中的值?

int nacitaj(float *suma, int *k) {
FILE *fr;
int i=0;
int j=1;
int o=1;
char p[30];
j=*k;


if ((fr = fopen("FILE.TXT","r")) == NULL){
printf("NULL\n");
}
else {
while(feof(fr) == 0){
fgets(p,30,fr);
fgets(p,30,fr);
fgets(p,30,fr);
fgets(p,30,fr);
fgets(p,30,fr);
i++;
}

suma=((float*)malloc(i*sizeof (float)));
rewind(fr);

while(feof(fr) == 0){
fgets(p,30,fr);
fgets(p,30,fr);
fgets(p,30,fr);
fscanf(fr,"%f\n", &suma[j]);
fgets(p,30,fr);
fgets(p,30,fr);
j++;

}

}
*k=j;
fclose(fr);
return suma;
}

主要内容

if(c=='N'){
suma=nacitaj(suma,&k);
}

我尝试过

suma=((float*)malloc(0*sizeof (float)));

一开始,但这让事情变得更糟。

最佳答案

I have to still figured out how to re-allocate my array when calling my function second time.

当再次调用该函数时,您已经使用相同的语句重新分配了数组(此外,它还有许多令人讨厌的括号和类型转换)。

    suma=((float*)malloc(i*sizeof (float)));

您可能正在寻找的是如何在不再需要数组时取消分配该数组。

    free(suma);

关于c - 从文件填充动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851366/

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