Xfree
06-07-2007, 20:37
Ciao a tutti.
Ho un problema con una parte di esercizio e se non lo risolvo non posso andare avanti. :D
Questo il testo della parte al momento interessata:
Una biblioteca ha immagazzinato in un file di testo i dati relativi ai libri posseduti.
Nel file di testo sono memorizzate, utilizzando tre righe del file per ogni libro, le seguenti informazioni
elenco degli autori
titolo del libro
tipologia(giallo,azione,ecc...)
Questo il codice
#include<stdio.h>
#include<string.h>
#define MAX 50
struct tlibro{
char autori[MAX];
char titolo[MAX];
char tipologia[MAX];
};
struct tlibro libro;
main()
{
int n;
FILE *fp;
fp=fopen("libri.txt","r");
if(fp==NULL)
printf("Si e' verificato un'errore nell'apertura del file\n");
else{
int c;
while(!feof(fp)){
n=fread(&libro,sizeof(struct tlibro),1,fp);
printf("%s\n",libro.autori);
printf("%s\n",libro.titolo);
printf("%s\n",libro.tipologia);
}
fclose(fp);
}
system("pause");
}
Questo il file di testo che ho creato per prova
DANTE
LA DIVINA COMMEDIA
COMMEDIA
DESCARTES
DISCORSO SUL METODO
SAGGISTICA
UMBERTO ECO
IL NOME DELLA ROSA
LETTERATURA
E questo è invece è l'output che ottengo a video
http://img456.imageshack.us/img456/4426/outputym8.png
Il problema, secondo me, è che leggendo MAX caratteri dalla stringa si va a prendere anche quelle successive,ho provato anche con fgets() ed fscanf() ma senza risultato.
Mi sapreste aiutare? :stordita:
Ho un problema con una parte di esercizio e se non lo risolvo non posso andare avanti. :D
Questo il testo della parte al momento interessata:
Una biblioteca ha immagazzinato in un file di testo i dati relativi ai libri posseduti.
Nel file di testo sono memorizzate, utilizzando tre righe del file per ogni libro, le seguenti informazioni
elenco degli autori
titolo del libro
tipologia(giallo,azione,ecc...)
Questo il codice
#include<stdio.h>
#include<string.h>
#define MAX 50
struct tlibro{
char autori[MAX];
char titolo[MAX];
char tipologia[MAX];
};
struct tlibro libro;
main()
{
int n;
FILE *fp;
fp=fopen("libri.txt","r");
if(fp==NULL)
printf("Si e' verificato un'errore nell'apertura del file\n");
else{
int c;
while(!feof(fp)){
n=fread(&libro,sizeof(struct tlibro),1,fp);
printf("%s\n",libro.autori);
printf("%s\n",libro.titolo);
printf("%s\n",libro.tipologia);
}
fclose(fp);
}
system("pause");
}
Questo il file di testo che ho creato per prova
DANTE
LA DIVINA COMMEDIA
COMMEDIA
DESCARTES
DISCORSO SUL METODO
SAGGISTICA
UMBERTO ECO
IL NOME DELLA ROSA
LETTERATURA
E questo è invece è l'output che ottengo a video
http://img456.imageshack.us/img456/4426/outputym8.png
Il problema, secondo me, è che leggendo MAX caratteri dalla stringa si va a prendere anche quelle successive,ho provato anche con fgets() ed fscanf() ma senza risultato.
Mi sapreste aiutare? :stordita: