Salve forum, vorrei alcuni chiarimenti riguardo il comando fopen (per aprire e scrivere informazioni su file).
Per far ciò vi posto un esame universitario, dove in pratica la traccia come primo step chiedeva di aprire in lettura un file di testo .txt dove vi erano scritte le seguenti informazioni:
88-07-73507-X;2011;Novecento;Alessandro Baricco;10.60
88-07-92163-X;2011;Omero, Iliade;Alessandro Baricco;8.08
ecc...
dove la prima parte indica il codice ISBN (con la variabile x da calcolare), indi anno, autore, prezzo ecc... e ogni informazione è separata da un punto e virgola.
Perfetto, ordunque io so che per leggere i file da testo si fa così:
nel caso di numeri o cambiando la variabile dove mettere le informazioni in caso di char ecc...codice:FILE *file_lettura; file_lettura = fopen("books.txt", "r"); if(fp == NULL) printf(“ERRORE in apertura del file”); while(!feof(file_lettura)) { fscanf(file_lettura, "%d", &numero); printf("numero letto: %d\n", numero); }
Ma in questo caso come si fà? Come si fa a far riconoscere il punto e virgola come fine informazione in lettura? Come posso mettere, per esempio, l'isbn in un intero, il nome in uno char* ecc...? Illuminatemi please!
Il prof nella soluzione ha messo il seguente codice:
Dove so che, ovviamente, per memorizzare l'ISBN accede all' item.key ma come fa a far riconoscere il punto e virgola come fine informazione? Non riesco a capire.codice:FILE *fp = fopen("books.txt", "r"); if (fp == NULL) { printf("ERROR - File books.dat not found\n"); return 0; } while(!feof(fp)) { strcat(item.key,"\0"); fscanf(fp,"\n%256[^;]",item.key); compute_checksum(item.key); fscanf(fp,"\n;%d",&(item.pubyear)); strcat(item.title,"\0"); fscanf(fp,"\n;%256[^;]",item.title); strcat(item.author,"\0"); fscanf(fp,"\n;%256[^;]",item.author); fscanf(fp,"\n;%f",&(item.price));

Rispondi quotando