PDA

Visualizza la versione completa : [C] Usare fscanf + fgets


alastordark
11-07-2011, 17:16
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:

typedef struct {
int vet1;
int vet2;
char string[101];
int vet3;
} struttura;



questo quello che ho scritto per la funzione di lettura:


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... :messner:
dove sbaglio? :dh:

Loading