Ir ao conteúdo
  • Cadastre-se

Problemas Com O Fgets Em C


Atíria

Posts recomendados

Olá pessoal! :goff:

Estou fazendo um programa que precisa ler de um arquivo com algumas palavras e reservá-las numa tabela. Cada uma dessas palavras está em linha diferente nesse arquivo.

Para ler as palavras, eu uso o fgets. Até aí tudo certo. No entanto quando eu crio uma função para buscar uma dessas palavras na tabela, ele retorna FALSE, ou seja, acusa que a palavra não está na carregada.

O problema é que ao ler a string do arquivo a função gets insere mais 3 caracteres além das letras: o '\0' que é normal, lógico; o '\n' que indica o fim da linha e o CR cujo ascii é 13. Devido a esses dois últimos o programa não reconhece a palavra que é digitada no prompt.

Como eu poderia retirar esses dois últimos caracteres da palavra que é reservada na memória principal?! Existe alguma outra função além do fgets que possa ler linha por linha e não inserir esses caracteres?!

Muito obrigada pessoal :rolleyes:

Link para o comentário
Compartilhar em outros sites

Em vez de tentar sacar a palavra inteira do ficheiro use o fgetc para retirar a palavra do ficheiro letra a letra. Exemplo:

while((c=fgetc(fp)) != EOF){

switch( c ){

    case '\n': ... break;

      case '\0': ... break;

      case '13': ... break;

      default:   ... break;

}

}

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...

aí galera... tenha uma duvida sobre o fgets em c...

estou querendo imprimir o conteudo de um txt em colunas na tela, porém só imprima a mesma palavra e a próxima coluna é toda desordenada.

alguém pode me ajudar???

fico grato...

OBS.: eu uso o devc++.

abaixo a função.

int Visualiza (void)

{

int i;

char palavra[15];

FILE *visualiza;

if ((visualiza = fopen ("animais.txt", "r")) == NULL)

{

Forca ();

gotoxy (39,12); textcolor (12); textbackground (3);

printf ("ERRO!\n");

gotoxy (25,17);

printf ("N%co foi poss%cvel ler o arquivo!\n", -58, -95);

fflush(stdin);

getch ();

}

else

{

Retangulo ();

textcolor (15); textbackground (1); gotoxy (6,4);

printf (" ANIMAIS ");

do{

fflush (stdin);

fgets (palavra, 15, visualiza);

for (i = 0; i < 60; i++) // for para controlar a impressão das strings.

{

if (i <= 15)

{

gotoxy (10,7); textcolor (0); textbackground (3);

fflush (stdin);

strupr (palavra);

puts (palavra);

}

} // fim do laço for

}

while (!feof (visualiza));

}

gotoxy (22,25); textcolor (14); textbackground (3);

printf (" Pressiona qualquer tecla para voltar \n");

getch ();

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!