Здравствуйте, у меня возникла проблема с заполнением моего массива из файла. В первый раз, когда я запускаю свою функцию nacitaj, она отлично работает. Но после того, как я назову это еще раз, выходные значения сумасшедшие. Есть ли способ сказать программе перезаписать значения в suma [] после того, как функция nacitaj вызывается более одного раза?Заполнение динамического массива из файла
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
Я распределяю 0 байт памяти, когда у меня есть i ++ перед распределением? i appologize для int k ... это не имеет ничего общего с этой частью программы – Toesmash
@Toesmash Да, это делает: 'j = * k;'. – cnicutar