Ir ao conteúdo
  • Cadastre-se

C Problemas em ler arquivo com espaço


Posts recomendados

Estou tendo problema para ler um arquivo com espaços, eu tenho um arquivo (ex mais em baixo)que a primeira linha eu descarto e começo a ler ela na segunda linha até a quarta

logo após começa uma matriz mas não consigo ler ela apropriadamente , ou gera um número aleatório ou simplesmente pega o número pela metade

 

void abrirArquivo(){
   char c [100];
   int b [3];
   int *d;
   int teste[4];

   FILE *file;
   file =fopen("GIMP.pgm","rt");
   if(file == NULL){
      printf("Problemas na abertura do arquivo \n");
   }

   fseek(file,2*sizeof(char),SEEK_SET);
      for(int i = 0; i<2; i++){
      fread(c,sizeof(char),3,file);
      b[i] = atoi(c);
      }
       fread(c,sizeof(char),5,file);
       b[2] = atoi(c);
       
       for(int i = 0 ; i<4; i++){
      fread(c,sizeof(char),6,file);
      teste[i]= atoi(c);
      printf("\n%d",teste[i]);
       }
      d = malloc(b[0] * b[1] *(sizeof(int)));
   free(d);
fclose(file);

}

O Arquivo em si Ç 

P2 (Eu pulo essa parte)
3 3 (Consigo ler esses dois dados)
255 (Consigo ler)
25	123	(Chega aqui não consigo ler o número inteiro)
255	255	
255	255

Resumindo tem um arquivo a primeira linha e o um nome a segunda e o tamanho da matriz e na terceira e o valor maximo que um numero pode tomar e logo após a matriz em si, eu consegui ler até o número máximo mas quando chega na matriz não vai

Link para o comentário
Compartilhar em outros sites

@Luiz Fernando Rosa Bom Dia!

20 horas atrás, Luiz Fernando Rosa disse:

fseek(file,2*sizeof(char),SEEK_SET);

 

* Erro Lógico: Você necessita da posição 3 e não 2  porque na posição 2 tem-se o caractere de nova linha.

Atente que cada linha é separada por desse caracteres e cada coluna por um espaço(s).

 

Por Último: Ficou confuso determinar se esses dados estão em texto ou binários. Enfim, um simples caractere no final modificou os índices de leitura que gerou um dos seus problemas.

 

At.te!

 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Mauro Britivaldo disse:

@Luiz Fernando Rosa Bom Dia!

 

* Erro Lógico: Você necessita da posição 3 e não 2  porque na posição 2 tem-se o caractere de nova linha.

Atente que cada linha é separada por desse caracteres e cada coluna por um espaço(s).

 

Por Último: Ficou confuso determinar se esses dados estão em texto ou binários. Enfim esse simples caractere no final modificou os índices de leitura assim sendo terá de revisar essa parte.

 

At.te!

 

@Mauro Britivaldo Bom dia!
Na esse não é o problema , usei esse comando para pular o "P2" do começo do arquivo para começar a ler os dados em si, ele lê mas quando chega na matriz logo após o valor máximo eu não consigo ler ele direito, o arquivo é em texto irei editar  arquivo para ficar mais claro

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!