Porque fgets() ao invés de gets()

Publicado por Leonardo Barrozo dos Santos em 20/03/2003

[ Hits: 19.701 ]

 


Porque fgets() ao invés de gets()



Quando utilizamos o gets() para pegar uma string do teclado pode acontecer do usuário digitar mais caracteres do que o array definido suporta, causando um erro no programa. É aí que entra a função fgets(), esta função limita o usuário a digitar somente a quantidade de caracteres necessária. Sendo stdin uma stream referenciada ao teclado, então utilizaremos assim:
#include<stdio.h>
#define MAX 10

int main()
{
   char teste[MAX];
   fgets(teste, MAX, stdin);
   printf("%s",teste);
}
Outras dicas deste autor

Passar variáveis char para inteiro

Interface gráfica com C

Conversão de tipos de dados em C/C++

Encontrando erros em seus programas

Leitura recomendada

Livro de programação de jogos Linux de graça

Migrando aplicativos C++ do Windows para Linux

Compilando Allegro no Linux

Passar variáveis char para inteiro

Usando o realloc

  

Comentários
[1] Comentário enviado por eduardod em 29/05/2004 - 10:31h

Boa dica.

[2] Comentário enviado por chumbeto em 20/08/2004 - 16:23h

Alguém sabe se existe algum operador tipo o chomp() do Perl p/ remover o \n no fim da string???

Com gets isso não acontece, já com fgets...

Falou!!!

[3] Comentário enviado por removido em 06/12/2004 - 08:14h

chumbeto, se existe operador eu não conheço, mas normalmente faço assim:

fgets(teste, MAX stdin);
teste[strlen(teste) - 1] = 0;

[4] Comentário enviado por RenatoSantoss em 15/05/2012 - 21:30h

Estou estudando C e isso ajudou legal. valeu pela dica!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts