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ì:
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);
}
nel caso di numeri o cambiando la variabile dove mettere le informazioni in caso di char ecc...
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:
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));
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.