您好我从文件中填充数组时遇到问题。我第一次运行我的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;
}
MAIN
if(c=='N'){
suma=nacitaj(suma,&k);
}
我试着做
suma=((float*)malloc(0*sizeof (float)));
在开始,但它更糟糕。
答案 0 :(得分:0)
我还必须弄清楚如何在调用时重新分配我的数组 我的功能第二次。
在再次调用函数时,您已经在重新分配数组,并使用相同的语句(除此之外,还有许多括号和类型强制转换)。
suma=((float*)malloc(i*sizeof (float)));
您可能正在寻找的是如何在阵列不再需要时取消分配。
free(suma);