Ir ao conteúdo

Posts recomendados

Postado

Função que escreve e lê o arquivo binário:

int FUNCAO_QUE_GRAVA_BIN (char filename[],int partida1,char resultado1)
{
        typedef struct  {
                int partida;
                char jogvelha[3][3];
                char resultado;
        } velha;

        velha partida = {partida1,{"a","b"},resultado1},read_data;

        FILE * file= fopen(filename, "wb");
        if (file != NULL) {
                fwrite(&partida, sizeof(velha), 1, file);
                fclose(file);

                FILE* fin = fopen(filename, "rb");
                fread(&read_data, sizeof(velha), 1, file);
                printf("%d %c %c\n", read_data.partida, read_data.jogvelha[3][3], read_data.
                       resultado);
                fclose(fin);
                fflush(stdin);
                while(getchar()!='\n'); // option TWO to clean stdin
                getchar(); // wait for ENTER
                return 0;//failure //ignore
        }

        return 1; //sucesso /ignore
}

chamando no main :

 

   int ganhador=1;
        char local[]={"binar"};
        int partidas= 1;

  FUNCAO_QUE_GRAVA_BIN(local,partidas,ganhador);

o problema é que o output está saindo tudo errado, o jogvelha[3][3] não sai direito, como arrumar?

  • Curtir 1
Postado

@Lucas Pelepek      o jogvelha[3][3] não está saindo direito por que você está imprimindo um caractere dessa matriz e que não existe essa posição informada , pois nessa matriz declarada só existe posições de zero até 2 tanto nas linhas como nas colunas , então para você imprimir o que estiver gravado nessa matriz você precisa colocar dois laços  de repetição que pode ser o  for  um dentro do outro e imprimir caractere por caractere , e isso seria assim  :

for(j=0;j<3;j++)
    for(w=0;w<3;w++)
        printf("%c",read_data.jogvelha[j][w]);

e também você está fechando o arquivo  fin   mas o nome do arquivo é file .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...