0
你好,我有一個從文件中填充我的數組的問題。我第一次運行我的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)));
在beggining但它使事情變得更糟。
你是否在再次調用函數之前將'k'設置爲正確的值? – cnicutar 2013-04-06 13:12:18
我是否在分配前分配0byte的內存? 我爲int k appologize ...它與程序的這部分無關 – Toesmash 2013-04-06 13:14:04
@Toesmash是的它確實:'j = * k;'。 – cnicutar 2013-04-06 13:14:53