Buonasera,
sto svolgendo un esercizio con file, struct e funzioni e mi sono bloccato.
Sto gestendo una biblioteca. Inserisco in una struct nome e cognome del richiedente, autore e titolo e codice dell'argomento compreso tra 1 e 25.
Faccio un po' di cose e va tutto bene.
Non riesco a stampare la lista dei libri richiesti per argomento. Ho provato con un ciclo e un if innestato ma non funziona. Sicuramente sbaglio più di una cosa a livello concettuale. Inolto la funzione incriminata:
void funzioneArgomentoPerTesto()
{// INIZIO BLOCCO FUNZIONE
FILE* fp_funzione;
fp_funzione=fopen("schedalibro.txt","r");
scheda s1_funzione;
int res=0;
int i=0;
int y=0;
int k=0;
int j[26]={0};
if (!fp_funzione) printf("Problemi nella apertura file (funzioneStampaTuttiRecord)");
else {
for(i=1; i<30; i++){
printf("\n\nArgomento %d", i);
do{ //WHILE
res=fscanf(fp_funzione, "%s", s1_funzione.nome); fscanf(fp_funzione, "%s", s1_funzione.cognome); fscanf(fp_funzione, "%s", s1_funzione.autore); fscanf(fp_funzione, "%s", s1_funzione.titolo); fscanf(fp_funzione, "%d", &s1_funzione.arg);
if(!feof(fp_funzione)){ if(s1_funzione.arg==i); printf("%s ""\n", s1_funzione.titolo); }
} while(!feof(fp_funzione));
fseek(fp_funzione, 0L, SEEK_SET);
} //FINE FOR
}//FINE ELSA
printf("\n");
fclose(fp_funzione);
}// FINE BLOCCO FUNZIONE
Questo il main:
#include <stdio.h>
void funzioneStampaTuttiRecord();
void funzioneNumeroTotaleLettori();
void funzioneListaLibriRichiestiPerArgomento();
void funzioneArgomentoPerTesto();
typedef struct{
char nome[20];
char cognome[20];
char autore [20];
char titolo[20];
int arg;
}scheda;
main()
{
scheda s1;
int i;
char appoggio;
char uscita;
FILE *fp;
fp=fopen("schedalibro.txt","a");
do{
printf("Inserire il NOME del RCHIEDENTE: ");
scanf("%s", s1.nome);
printf("Inserire il COGNOME del RCHIEDENTE: ");
scanf("%s", s1.cognome);
printf("Inserire l'AUTORE richiesto: ");
scanf("%s", s1.autore);
printf("Inserire il TITOLO richiesto: ");
scanf("%s", s1.titolo);
//fflush(stdin);
printf("Inserire ARGOMENTO 1-25: ");
scanf("%d", &s1.arg);
fflush(stdin);
if (fp==NULL) printf("Problemi nella apertura file");
else { fprintf(fp, "%s ", s1.nome); fprintf(fp, "%s ", s1.cognome); fprintf(fp, "%s ", s1.autore); fprintf(fp, "%s ", s1.titolo); fprintf(fp, "%d ", s1.arg);
}
printf("Uscire? Premi u per uscire qualsiasi altro carattere per continuare l'inserimento");
scanf("%c", &uscita);
} while(uscita!='u');
fclose(fp);
// printf("%s", s1.nome); printf("%s", s1.cognome); printf("%s", s1.autore); printf("%s", s1.titolo); printf("%d", s1.arg);
//funzioneStampaTuttiRecord(); //INVOCAZIONE FUNZIONE
//funzioneNumeroTotaleLettori(); //INVOCAZIONE FUNZIONE
//funzioneListaLibriRichiestiPerArgomento(); //INVOCAZIONE FUNZIONE
funzioneArgomentoPerTesto(); //INVOCAZIONE FUNZIONE
//funzioneNumeroTotaleLettori(); //INVOCAZIONE FUNZIONE
// printf("%s", s1.nome); printf("%s", s1.cognome); printf("%s", s1.autore); printf("%s", s1.titolo); printf("%d", s1.arg);
printf("\n\n");
}
Grazie