Função gets

Home Fóruns Linguagem C Função gets

Marcado: 

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #79458

      A função “gets” deixou de ser utilizada por questões relacionadas a segurança.

      O “scanf” nao possibilita a leitura dos espaços e o “fgets” da enter depois da leitura.

      Gostaria de saber qual a alternativa para ler uma string com espaços?

      Obrigado

    • #79803
      Tutora Mayla
      Mestre

      Andre, o fgets quando lê uma string que seja menor que o tamanho informado, deixa um caracter '\n' ao final dessa string, fazendo com que quando escrevemos essa string com um printf tenha essa quebra de linha. Este comportamento não ocorre com a função gets porém esta função sofre com alguns problemas de segurança.
      É possível continuar utilizando a fgets e resolver este problema, mas para isso precisamos saber em qual posição da cadeia se encontra este caracter '\n' e substituí-lo pelo marcador de fim de string '\0'. Uma forma é utilizando a função strcspn da biblioteca string.h que encontra a primeira ocorrência de um caracter dentro de uma cadeia, conforme o exemplo a seguir:

      printf("Qual seu nome? ");
      fgets(nome, 30, stdin);
      int quebra = strcspn(nome, "\n");
      nome[quebra] = '\0';
      printf("Prazer em conhecê-lo %s seja bem vindo!", nome);

      Para utilizar esta função é necessário incluir a biblioteca string.h.

      Espero ter ajudado, caso a dúvida persista basta entrar em contato.

    • #83201
      Lucimara Queiroga
      Participante

      Quando uso gets aparece a mensagem:
      The ‘gets’ function is dangerous and should not be used.
      Alguém sabe me dizer porque isso esta acontecendo?

Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.