Salve a tutti volevo chiedervi un piccolo aiuto... ho scritto un programma su file di testo in c che in pratica in input ricevo 2 file contenenti nomi di squadre di calcio e goal e un terzo un file di output con i vari esiti "1", "x", "2"; il primo contiene nome e goal fatti dalle squadre che giocano in casa, il secondo nome e goal delle squadre ospiti;il programma è compilato bene e funzionerebbe pure ma nel file di output invece dei caratteri che ho scelto escono dei caratteri strani come mai?? Grazie a tutti per le risposte al mio post.
Questo è il codice che ho implementato:
codice:
const int max_dim=100;
typedef char stringa[max_dim];
struct calcio
{
stringa squadra;
int goal;
};
typedef char carattere[max_dim];
typedef calcio vettore[max_dim];
void leggi_vett(vettore, int &, const char *);
void verifica_esito(vettore, vettore, int, carattere);
void salva_sched(carattere, int, const char *);
[code]
#include <stdlib.h>
#include <stdio.h>
#include "lib.h"
int main()
{
vettore v1, v2;
int riemp1, riemp2;
carattere esito;
leggi_vett(v1, riemp1, "input1.txt");
leggi_vett(v2, riemp2, "input2.txt");
if(riemp1!=riemp2)
printf("riempimenti diversi non continuo /n/n");
else
{
verifica_esito(v1, v2, riemp1, esito);
salva_sched(esito, riemp1, "output.txt");
}
system("PAUSE");
return 0;
}
[/code ]
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lib.h"
void leggi_vett(vettore v, int &riemp, const char *nomefile)
{
int i;
FILE* fp=fopen(nomefile, "r");
if(!fp)
{
printf("file non trovato /n/n");
system("PAUSE");
exit(1);
}
fscanf(fp, "%d", &riemp);
for(i=0;i<riemp;i++)
{
fscanf(fp, "%s", &v[i].squadra);
fscanf(fp, "%d", &v[i].goal);
}
fclose(fp);
}
void verifica_esito(vettore v1, vettore v2, int riemp1, carattere esito)
{
int i;
for(i=0;i<riemp1;i++)
{
if(v1[i].goal>v2[i].goal)
esito[i]='1';
else
if(v1[i].goal<v2[i].goal)
esito[i]='2';
else
esito[i]='x';
}
}
void salva_sched(carattere esito, int riemp1, const char *nomefile)
{
int i;
FILE* fp=fopen(nomefile, "w");
if(!fp)
{
printf("file non trovato \n\n");
system("PAUSE");
exit(1);
}
for(i=0;i<riemp1;i++)
fprintf(fp, "%c", &esito[i]);
fclose(fp);
}