Il seguente, è il codice di un programma che inserisce in un array gli elementi all'interno del file:
main.c
int main(int argc, char** argv)
{
char* nomefile = "file2.txt";
int size = 0, i;
float* v = leggi_array(nomefile, &size);
}
funzione.c
float* leggi_array(char* nomefile, int* n)
{
//Array per allocazione dinamica
float *array;
int x, i = 0, flag;
//Controllo apertura file
FILE *f = fopen(nomefile, "r");
if(f == NULL)
printf("Errore nell'apertura del file");
else
{
while(!feof(f))
{
flag = fgetc(f);
*n = *n +1;
}
printf("*n: %d", *n);
}
Il codice devo ancora completarlo.
La prima cosa che devo fare è contare quanti elementi ci sono all'interno del file. In modo tale da poter allocare dinamicamente il mio vettore che li andrà a contenere.
Il problema è proprio contarli, non riesco a capire dove sbaglio.
Il mio file txt è questo:
1
2
3
4
5
In questo modo *n = 10.
Ora, fate finta che abbia dichiarato flag come double
Se il mio file txt ora è:
0.5768 12
1
13.45
0.001 9.3 89.5
4
*n = 36
Perché?
Ho appena provato con
fscanf(f, "%d", &x); al posto di
flag = fgetc(f); (riguardo il file contenente i 5 interi) e *n = 5, quindi giusto. E anche con l'altro file *n = 8, ancora giusto. Presumo sia colpa di getc. Ho sbagliato io ad usarla?