Qualcuno sa dirmi perchè non mi fa operare al momento dell'esecuzione? ci sono 3 warnings ma non credo siano il motivo del mio problema.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
/*Declarative part*/
char label[20];
char nome[20];
char cognome[20];
char matricola[7];
char nome_esame[20];
char string[60];
int entries=0;
int loop,voto;
char file_name[20];
FILE *fp, *fp2;
struct Entry_struct
{
char nome[20];
char cognome[20];
char matricola[7];
char nome_esame[20];
int voto;
} entry[20];
Entry_struct entry1;
/*end of declaration*/
if (argc!=2) {
printf("Uso: nome_programma nome_file\n");
exit(1);
}
strcpy(file_name,argv[1]);
/*Scrivi etichetta come stringa di 20 caratteri*/
printf("\n\n Scrivi un'etichetta per la tabella: ");
gets(label); //scanf("%20s",label)
fflush(stdin); //Scarica l'input per controllo
/*Scrivi numero di ingressi come un intero*/
printf("Quanti ingressi ci saranno?(meno di 20) ");
scanf("%d",&entries);
fflush(stdin);
/*Scrivi un nome (solo lettere maiuscole o minuscole)*/
for (loop=0;loop<entries;loop++)
{loop++;
printf("Scrivi il %d°\n",loop);
loop--;
printf(" NOME: ");
scanf("%[A-Za-z]",entry[loop].nome);
fflush(stdin);
/*Scrivi cognome*/
printf(" COGNOME: ");
scanf("%[A-Za-z]",entry[loop].cognome);
fflush(stdin);
/*Scrivi numero matricola*/
printf(" MATRICOLA: ");
scanf("%7s",entry[loop].matricola);
fflush(stdin);
/*Scrivi nome esame*/
printf(" NOME ESAME: ");
scanf("%[A-Za-z]",entry[loop].nome_esame);
fflush(stdin);
/*Scrivi voto esame*/
printf(" VOTO: ");
scanf("%d",&entry[loop].voto);
fflush(stdin);
}
/*Scrivi nome, cognome, matricola, nome e voto esame*/
printf("Inserisci nome, cognome, matricola\n");
scanf("%20s %20s %7s", nome, cognome, matricola);
/*Apri un file di testo per scrivere dati*/
fp=fopen(file_name,"w");
if (!fp){printf("Impossibile aprire il file"); exit(1);}
/*Stampo su file i dati inseriti*/
fprintf(fp,"TABELLA %s\n",label);
fprintf(fp,"Compilata per %s %s\nMatricola: %s\n",nome, cognome, matricola);
fprintf(fp,"----------------------------------------------------------------\n");
for(loop=0;loop<entries;loop++) fprintf(fp,"%d|%20s|%20s|%8s|%15s|%2d\n",
loop+1,
entry[loop].nome,
entry[loop].cognome,
entry[loop].matricola,
entry[loop].nome_esame,
entry[loop].voto);
fprintf(fp,"----------------------------------------------------------------\n");
/*Chiudi file dopo scrittura*/
fclose(fp);
/*Apri un file di testo per leggere dati*/
fp=fopen(file_name,"r");
if(!fp){printf("Impossibile aprire file testo"); exit(1);}
/*Scrivi su stdout i dati del file*/
while(fgets(string,79,fp)!=NULL){puts(string); getche();}
/*Chiudi il file di testo*/
fclose(fp);
/*Apri in file binario per scrivere i dati*/
fp2=fopen("dummy2.fil","wb");
if(!fp2){printf("Impossibile aprire file"); exit(1);}
for(loop=0;loop<entries;loop++)
fwrite(&entry[loop],sizeof(entry),1,fp2);
/*Chiudi il file binario*/
fclose(fp2);
/*Apri un file binario per leggere i dati*/
fp2=fopen("dummy2.fil","rb");
if(!fp2){printf("Impossibile aprire file");exit(1);}
loop=0;
/*Leggi e scrivi su stdout i dati del file*/
while(fread(&entry1,sizeof(entry),1,fp2))
{
printf("%d|%20s|%20s|%8s|%15s|%2d\n",
loop+1,
entry1.nome,
entry1.cognome,
entry1.matricola,
entry1.nome_esame,
entry1.voto);getche();}
/*Per vedere come funziona,vai un record indietro e stampalo*/
fseek(fp2,-sizeof(entry),SEEK_CUR);
fread(&entry1,sizeof(entry),1,fp2);
printf("%d|%20s|%20s|%8s|%15s|%2d\n",
loop,
entry1.nome,
entry1.cognome,
entry1.matricola,
entry1.nome_esame,
entry1.voto);getche();
/*Chiudi il file binario*/
fclose(fp2);
/*Chiudi il programma e ritorna 0*/
return 0;
}