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:
[code]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 *);
#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); }

Rispondi quotando