#include <stdio.h>
#include <stdlib.h>
typedef struct Pessoa
{
int cc;
char nome[51];
char partida[11];
char chegada[11];
short int dia;
} PESSOA;
int main()
{
int i;
FILE* fps = fopen("okb","rb");
PESSOA passageiro;
if (fps == NULL)
{
printf("Problemas na abertura do arquivo\n");
exit(1);
}
else
{
fread (&passageiro.cc, 4, 1, fps);
fread (passageiro.nome, 1, 51, fps);
fread (passageiro.partida, 1, 11, fps);
fread (passageiro.chegada, 1, 11, fps);
fread (&passageiro.dia, 2, 1, fps);
printf("%d ", passageiro.cc);
for(i = 0; i < 51; i++)
{
printf("%c", passageiro.nome[i]);
}
for(i = 0; i < 11; i++)
{
printf("%c", passageiro.partida[i]);
}
for(i = 0; i < 11; i++)
{
printf("%c", passageiro.chegada[i]);
}
printf("%hd\n", passageiro.dia);
}
fclose(fps);
}
Boa noite, estava aqui a fazer um trabalho e deparei-me com isto e não consigo perceber o porquê da função não ler o que eu pretendo. Acho que deve ser algo bem simples mas como sou novo nisto não estou a conseguir detetar o que falha. É suposto esta função ler umas informações que estão num ficheiro em binário, o número do cc, nome da pessoa, local de partida e chegada do avião e dia do mês. Mas ao detetar o dia do mês a função em vez de escrever um número entre 1 - 30 escreve 256. Alguém percebe porquê?