Ir ao conteúdo
  • Cadastre-se

AccioOnion

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

0
  1. Tem razão, assim já está bem, muito obrigado!
  2. #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 () { PESSOA passageiro; int contador; char ch; FILE* fp = fopen("ok","r"); if(fp == NULL) { printf("Impossivel abrir o ficheiro"); exit(1); } while(fgetc(fp) != EOF && fscanf(fp, "%d", &passageiro.cc)) { printf("%d ", passageiro.cc); contador = 0; while(contador < 51) { ch = fgetc(fp); passageiro.nome[contador] = ch; printf("%c", passageiro.nome[contador]); contador++; } contador = 0; while(contador < 11) { ch = fgetc(fp); passageiro.partida[contador] = ch; printf("%c", passageiro.partida[contador]); contador++; } contador = 0; while(contador < 11) { ch = fgetc(fp); passageiro.chegada[contador] = ch; printf("%c", passageiro.chegada[contador]); contador++; } fscanf(fp, " %hd", &passageiro.dia); printf("%hd\n", passageiro.dia); } fclose(fp); } o código agora está assim mas continua a dar o mesmo.ok.zip O ficheiro é este:
  3. Olá outra vez, entretanto estive a ler o mesmo ficheiro mas desta vez em formato de texto e apareceu no final aquela linha com uns caracteres estranhos, alguem sabe porquê? #include <stdio.h> #include <stdlib.h> int main () { int contador; long int nr; char nome[51], partida[11], chegada[11], ch; short int dia; FILE* fp = fopen("ok","r"); if(fp == NULL) { printf("Impossivel abrir o ficheiro"); exit(1); } while(fgetc(fp) != EOF) { fscanf(fp, " %ld", &nr); printf("%ld ", nr); contador = 0; while(contador < 51) { ch = fgetc(fp); nome[contador] = ch; printf("%c", ch); contador++; } contador = 0; while(contador < 11) { ch = fgetc(fp); partida[contador] = ch; printf("%c", ch); contador++; } contador = 0; while(contador < 11) { ch = fgetc(fp); chegada[contador] = ch; printf("%c", ch); contador++; } fscanf(fp, " %hd", &dia); printf("%hd\n", dia); } fclose(fp); }
  4. Diz que não suporta o tipo do ficheiro, como faço?
  5. Tem razão, já alterei mas continua a dar o mesmo. O ficheiro em binário está como descrito na imagem. Ou quer que envie mesmo o ficheiro por aqui?
  6. #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 { fscanf(fps, " %hd", &passageiro.dia); fread (passageiro.nome, 1, 51, fps); fread (passageiro.partida, 1, 11, fps); fread (passageiro.chegada, 1, 11, fps); fscanf(fps, " %hd", &passageiro.dia); 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); } A alteração ficou assim, e o que ela lê está no print que meti no comentário de cima. Não sei se é isso que quer ver, ou se me está a pedir outra coisa.
  7. Desde já, muito obrigado por ter disponibilizado o seu tempo para me ajudar mas experimentei fazer essa alteração e afetou o cc, e a chegada e no entanto o dia continua a não aparecer correto. Fica assim:
  8. #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 nao 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ê?

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!