#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ê?