Ciao a tutti,è la prima volta che posto un argomento .MI sto esercitando per un esame e il programma che devo scrivere deve trovare uno studente con una certa matricola in un file binario. Ho iniziato a scrivere del codice per inserire il nome di uno o più studenti in un file,ma quando vado in lettura mi compare solo il primo nome che ho inserito e gli altri non vengono letti premetto che non sono un genio del C quindi se qualcuno può aiutarmi . Posto il codice:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char nome [60];
int i ; int n = 0;
fp = fopen("FileStudente.txt" , "wb");
printf("Quanti studenti vuoi inserire?\n");
scanf ( "%d" ,&i);
if(i==1) //se voglio inserire un solo studente
{
if(fp){
printf("Inserisci il nome:");
scanf("%s", &nome);
fwrite(&nome, sizeof(nome) , 1,fp);
}
else
{
exit(1);
printf("Errore di caricamento file\n");
}
}
else if(i>1) { // se voglio inserire più studenti
for(n=0;n <i ;n++){
printf("Inserisci il nome:");
scanf("%s", &nome);
fwrite(&nome, sizeof(nome), 1,fp); //scrivo il nome nel file
fseek(fp,0,SEEK_END); /*porto il puntatore alla fine del file così
alla scrittura del successivo nome, non viene sovrascritto il nome
precedente , anche se non so se serve */
}
}
fclose(fp);
fp = fopen("FileStudente.txt", "rb"); // apro il file per leggere i nomi
fseek(fp, 0 ,SEEK_SET); // riporto il puntatore all'inizio
fread(&nome , sizeof(nome) , 1,fp); // leggo il file ma esce solo il primo nome che ho inseritoo
printf("Il nome inserito e\': %s\n",nome);
fclose(fp);
system("PAUSE");
return 0;
}