ciao a tutti sono nuovo e spero possiate aiutarmi!
allora inizo subito esponendo il mio problema:
devo leggere da un file di testo. il file è strutturato così:
ogni riga è composta da 3 interi e una sequenza di parole. ogni riga quindi è una struttura definita come tipo (int int char int ) e la sequenza di parole con spazi deve essere presa e messa in un array di massima dimensione 100.
allora siccome ha gli spazi ho pensato di usare fscanf per i primi 3 interi e mettere tutto dentro un array di strutture, e fgets per la stringa... ma non riesco a fargli leggere un bel niente..
questa è la struttura:
codice:
typedef struct {
int vet1;
int vet2;
char string[101];
int vet3;
} struttura;
questo è quello che ho scritto per la funzione di lettura:
codice:
struttura * leggiStruttura(char * fileName, int * dim) {
int count, i;
FILE * fp;
struttura * result;
struttura temp;
if ((fp=fopen(fileName, "r")) == NULL){
printf("nessun file trovato ciccio!");
exit(1);
}
count = 0;
while ((fscanf(fp, "%d %d %d",&(temp.vet1), &(temp.vet2), &(temp.vet3)) == 3) && ((fgets(temp.string, 101, fp)) != NULL))
count++;
rewind(fp);
result = (struttura *) malloc(count * sizeof(struttura));
for (i=0; i<count; i++)
fscanf(fp, "%d %d %d", &(result[i].vet1), &(result[i].vet2), &(result[i].vet3));
fgets(result[i].string, 101, fp);
fclose(fp);
*dim = count;
return result;
}
il compilatore compila ma non mi scrive nulla quando eseguo...
dove sbaglio?