Ir ao conteúdo
  • Cadastre-se

C Ler matriz char, de um arquivo binário


Lucas Pelepek

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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 .

Link para o comentário
Compartilhar em outros sites

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...