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);
}