Ciao a tutti,devo fare fra pochi giorni un esame sul linguaggio C,ma sono alle prime armi e abbastanza in difficolta'.
Sto cercando di scrivere un programma con la seguente consegna:
I leggere e caricare in memoria tutti i dati contenuti in due file F1 e F2
generici,entrmbi contenenti un elenco di numeri interi, un numero per riga. Il primo numero in
ciascun file indica quanti sono i rimanenti numeri contenuti nel rispettivo file. Tale primo valore
non è da considerare nelle successive elaborazioni, ma serve soltanto ad indicare quanti sono
i numeri da leggere nel file.
Il programma dovrà calcolare e stampare la media dei valori letti dal solo file F1. Ciascun
valore che viene considerato per il calcolo della media deve rispettare i seguenti criteri:
• il numero NON DEVE essere contenuto dell'insieme di valori letti dal file F2;
• il numero deve essere maggiore o uguale di un valore precedentemente richiesto e
inserito da tastiera dall'utente.
Allego il codice scritto da me
#include <stdio.h>
int main(int argc,char **argv)
{
FILE *f1,*f2;
int soglia;
int lung1,lung2;
int i;
int j;
int *valori,*esclusi;
int somma,media;
int cont=0;
if(argc!=3){printf("Bisogna inserire due file da linea di comando");
}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"r");
if(f1==NULL || f2==NULL){
printf("i file non sono stati aperti correttamente");
}
fread(&lung1,sizeof(int),1,f1);
fread(&lung2,sizeof(int),1,f2);
valori=(int*)malloc(sizeof(int)*((lung1)+1));
esclusi=(int*)malloc(sizeof(int)*((lung2)+1));
printf("inserire un valore di soglia");
scanf("%d",&soglia);
for(i=0;i<lung1;i++){
fscanf(f1,"%d",&valori[i]);
if(valori[i]>=soglia){
for(j=0;j<lung2;j++){
fscanf(f2,"%d",&esclusi[j]);
if(valori[i]==esclusi[j])break;
}
if(j==lung2){
somma+=valori[i];
cont++;}
}
}
media=somma/cont;
printf("%d",media);
free(valori);
free(esclusi);
return 0;
}
Eseguendolo mi viene dato un errore di segmentation fault[core dumped]
Qualcuno potrebbe aiutarmi a capire dov'e' l'errore??grazie