Salve ragazzi mi sono appena iscritto. Ho scritto un semplicissimo programma in c in cui scrivo e leggo su un file binario. Mi continua a dare in maniera persistente errore core dump segmentation fault...ho avuto modo di notare che tale errore si presenta solo se apro il flusso su file, mentre in caso contrario va tutto liscio come l'olio. Vi prego di aiutarmi a capire dove sbaglio dato che dopo infiniti tentativi non so proprio cosa pensare .
Vi posto il codice:
#include <stdio.h>
typedef struct
{
char nome[15];
char cognome[15];
int matricola;
int esami;
}studente;
int main (int argc, char *argv[])
{
FILE *pf;
//pf=fopen(*argv,"rb");
//if (pf==NULL) //da modificare questo controllo
//{
int n,i;
printf("quanti studenti vuoi inserire? "); scanf("%d",&n);
studente stud[(n-1)];
//pf=fopen(*argv,"ba");
//devo leggere i vari campi ora
char str[15],str1[15],str2[15];
for (i=0;i<n;i++)
{
printf("STUDENTE NUMERO %d: ",i);
printf("\nil nome dello studente è: ");
scanf("%s",stud[i].nome); //leggere un vettore di char non richiede l'operatore & e richiede %s al posto di %c
printf("il cognome dello studente è: ");
scanf("%s",stud[i].cognome);
printf("la matricola dello studente è: ");
scanf("%d",&stud[i].matricola);
printf("esami sostenuti: ");
scanf("%d",&stud[i].esami);
sprintf(str,"%d",i);
sprintf(str1,"%d",stud[i].matricola);
sprintf(str2,"%d",stud[i].esami);
pf=fopen(*argv,"a+b");
fputs(stud[i].nome,pf);
fputs(stud[i].cognome,pf);
fputs(str,pf);
fputs(str1,pf);
fputs(str2,pf);
//fprintf(pf,"STUDENTE NUMERO %c:\n",i);
//fprintf(pf,"nome: %s\ncognome: %s\nmatricola: %s\nesami sostenuti: %s\n",stud[i].nome,stud[i].cognome,str1,str2);
fclose(pf);
};