Questo è il testo che ho consegnato al prof.Ho provato a farlo girare ma non funziona bene,legge il fileInput solo in modo parziale
#include <stdio.h>
#include <stdlib.h>
struct Dati
{
int valore;
char simbolo;
};
void Punteggio(char nomefile[],char file_out[]);
int main(int argc,char *argv[])
{
if(argc!=3)
{
printf("Errore linea comando\n");
exit(1);
}
else
Punteggio(argv[1],argv[2]);
return 0;
}
void Punteggio(char nomefile[],char file_out[])
{
struct Dati v[4];
char nome[31];
char cognome[31];
char ch;
int i,n_es,voto,conta=0,somma=0;
FILE *fp1;
FILE *fp2;
fp1=fopen(nomefile,"r");
fp2=fopen(file_out,"w");
fscanf(fp1,"%*s%d",&n_es);
fscanf(fp1,"%*s");
for(i=0;i<n_es;i++)
fscanf(fp1,"%d%c",&v.valore,&v.simbolo);
while((ch=getc(fp1))!=EOF)
{
getc(fp1);
getc(fp1);
i=0;
while((ch=getc(fp1))!=',')
{
nome=ch;
i++;
}
nome='\0';
i=0;
getc(fp1);
while((ch=getc(fp1))!=',')
{
cognome=ch;
i++;
}
cognome='\0';
i=0;
getc(fp1);
for(i=0;i<n_es;i++)
{
fscanf(fp1,"%d",&voto);
if(v.simbolo=='*')
{
if(voto>(v.valore/10)*6)
{
conta++;
somma+=voto;
}
}
else
{
conta++;
somma+=voto;
}
if(conta==n_es)
{
fprintf(fp2,"%s,%s, %d\n",cognome,nome,somma);
}
}
}
fclose(fp1);
fclose(fp2);
}