Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Atíria

Problemas Com O Fgets Em C

Recommended Posts

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:

Compartilhar este post


Link para o post
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;

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu gente!

Mas eu preciso ler de modo efiente todo bloco de palavra por linha! Consegui isso com o fscanf!!

!!!!!!! :palmas:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×