从File填充动态数组

时间:2013-04-06 13:10:18

标签: c

您好我从文件中填充数组时遇到问题。我第一次运行我的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)));

在开始,但它更糟糕。

1 个答案:

答案 0 :(得分:0)

  

我还必须弄清楚如何在调用时重新分配我的数组   我的功能第二次。

在再次调用函数时,您已经在重新分配数组,并使用相同的语句(除此之外,还有许多括号和类型强制转换)。

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

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

    free(suma);