Boas, galera tenho um problema, estou tentando criar um programa que escreva para e leia de um ficheiro, acontece que consigo escrever para o ficheiro, mas o contéudo não é nada daquilo que eu escrevo na tela e quando faço o printf para o ecrã surge numeros como se fosse registos de memória alguém me pode ajudar.
Obrigado.
#include <stdio.h>
#define ESPACO 50
#define FICH "consulta.txt"
typedef struct consulta
{
int numero;
char nome[20];
char especialidade[20];
int data;
int hora;
int contacto;
} CONSULTA;
int main() {
char opcao;
CONSULTA hospital[ESPACO], tabela;
int getConsulta = 0, i, j;
FILE *fp;
while(1) {
printf("\n\nDev Testes\n");
printf("1 - Inserir Consulta\n");
printf("2 - Listar\n");
printf("3 - Ordenar por número\n");
printf("4 - Ordenar por nome\n");
printf("5 - Gravar para ficheiro\n");
printf("6 - Ler de ficheiro\n");
printf("7 - Sair\n");
printf("8 - Remover Consulta\n\n");
rewind(stdin); /* reinicio do ficheiro */
opcao = getchar();
switch(opcao) {
case '1': {
printf("Número: ");
scanf("%s", hospital[getConsulta].numero);
printf("Nome: ");
scanf("%s", hospital[getConsulta].nome);
printf("Especialidade: ");
scanf("%s", hospital[getConsulta].especialidade);
printf("Data: ");
scanf("%s", hospital[getConsulta].data);
printf("Hora: ");
scanf("%s", hospital[getConsulta].hora);
printf("Contacto: ");
scanf("%s", hospital[getConsulta].contacto);
rewind(stdin);
getConsulta++;
}
break;
/* Faz o display no ecrã dos dados recolhidos*/
case '2': {
for(i=0; i<getConsulta; i++) {
printf("Numero: %u\n",&hospital[getConsulta].numero);
printf("Nome: %u\n",&hospital[getConsulta].nome);
printf("Especialidade: %u\n",&hospital[getConsulta].especialidade);
printf("Data: %u\n",&hospital[getConsulta].data);
printf("Hora: %u\n",&hospital[getConsulta].hora);
printf("Contacto: %u\n",&hospital[getConsulta].contacto);
}
}
break;
/* Ordenar por numero*/
case '3': {
for(i=0; i<getConsulta; i++){
for(j=0; j<getConsulta-i-1; j++){
if(hospital[j].numero > hospital[j+1].numero) {
tabela = hospital[j];
hospital[j] = hospital[j+1];
hospital[j+1] = tabela;
}
}
}
}
break;
/* Ordenar por nome*/
case '4': {
for(i=0; i<getConsulta; i++){
for(j=0; j<getConsulta-i-1; j++){
if( strcmp(hospital[j].nome, hospital[j+1].nome)==1 ) {
tabela = hospital[j];
hospital[j] = hospital[j+1];
hospital[j+1] = tabela;
}
}
}
}
break;
/* Gravar para ficheiro*/
case '5': {
fp = fopen(FICH, "w");
fwrite(&getConsulta, sizeof(int), 1, fp);
fwrite(hospital, sizeof(CONSULTA), ESPACO, fp);
fclose(fp);
}
break;
/* Ler o ficheiro*/
case '6': {
fp = fopen(FICH, "r");
fread(&getConsulta, sizeof(int), 1, fp);
fread(hospital, sizeof(CONSULTA), ESPACO, fp);
fclose(fp);
}
break;
/* Sair */
case '7':
exit(0);
}
}
}
Pergunta
krs123
Boas, galera tenho um problema, estou tentando criar um programa que escreva para e leia de um ficheiro, acontece que consigo escrever para o ficheiro, mas o contéudo não é nada daquilo que eu escrevo na tela e quando faço o printf para o ecrã surge numeros como se fosse registos de memória alguém me pode ajudar.
Obrigado.
Editado por krs123Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.