Scusami ancora, ho un'altro problema.
Quando creo un nuovo file, cancellando quello precedente, va' tutto bene,
invece quando voglio accodare al file altri "alunni" mi da errore di Windows dopo che ho premuto INVIO per l'ultimo inserimmento (cioe' quando inserisco l'anno e premo invio).
codice:
# include <iostream>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
using namespace std;
typedef char Eta[8];
typedef char Sezione[10];
typedef char Anno[8];
typedef char Nome[20];
struct alunno {
Nome nome;
Nome cognome;
Eta eta;
Sezione sezione;
Anno anno;
};
struct alunno lettura_stdin();
void scrittura_file(struct alunno a, FILE* w);
int main(){
int ris;
struct alunno a[100];
FILE *w, *r, *file;
ris=0;
while (ris!=3)
{
printf("1) Accoda l'alunno (Accodando l'alunno agli alunni gia' inseriti\n");
printf("2) Inizia nuovo elenco (Cancellando gli alunni precedenti\n");
printf("3) Esci\n");
scanf("%d",&ris);
if (ris==1)
{
r = fopen("test_2.txt","r");
a[0]=lettura_stdin();
scrittura_file(a[0],w);
}
if (ris==2)
{
w = fopen("test_2.txt","w");
a[0]=lettura_stdin();
scrittura_file(a[0],w);
}
}
printf ("Sei uscito dal programma\n");
fclose(w);
system("pause");
}
struct alunno lettura_stdin(){
struct alunno a;
printf("Inserisci il nome dell'alunno\n");
scanf("%s",&a.nome);
printf("Inserisci il cognome dell'alunno\n");
scanf("%s",&a.cognome);
printf("Inserisci l'eta dell'alunno\n");
scanf("%s",&a.eta);
printf("Inserisci la sezione dell'alunno\n");
scanf("%s",&a.sezione);
printf("Inserisci l'anno dell'alunno\n");
scanf("%s",&a.anno);
return a;
}
void scrittura_file( struct alunno a, FILE* w){
fprintf(w, "%-20s",a.nome);
fprintf(w, "%-20s",a.cognome);
fprintf(w, "%-8s",a.eta);
fprintf(w, "%-10s",a.sezione);
fprintf(w, "%-8s\n",a.anno);
fflush(w);
}