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:
il compilatore compila ma non mi scrive nulla quando eseguo...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; }![]()
dove sbaglio?![]()

Rispondi quotando