Curso de Programação C | Como ler uma String com a função gets()? | aula 130

Поделиться
HTML-код
  • Опубликовано: 8 фев 2025
  • Outra função muito simples para a leitura de strings a partir do teclado é a função gets(). Contudo, você deve evitar ao máximo utilizar esta função.
    Sua utilização é bem simples, bastando passar como parâmetro o nome do vetor onde a string será salva, assim:
    char palavras[100];
    gets(palavras);
    Contudo, esta função é insegura. Dependendo de qual compilador você esteja utilizando, ele emitirá uma mensagem de alerta, informando que a função é insegura e você não deveria utiliza-la.
    Código disponível em: wagnergaspar.com/

Комментарии • 12

  • @kayomartins6743
    @kayomartins6743 Месяц назад

    ótimo vídeo.

  • @gominhuu
    @gominhuu Месяц назад

    fgets é diferente da gets ne ? gostaria de saber se ao usar fgets eu teria algum problema pra compilar meu programa e se é recomendado usado usar fgets ao inves da string ?

  • @wesleyalves1141
    @wesleyalves1141 2 года назад +2

    o que eu percebi ate no momento que tenho estudado , e que existem muitas controversas que acabam atrapalhando o aprendizado. No curso aprendi apenas usar a scanf e nunca meu professor mencionou que pra eu escrever varios nomes , teria que colocar uns detalhes . fiquei mais de 3 semanas no intervalo das aulas pesquisando e ai aprendi varias outras formas na internet. uma usa o gets , mais ele tem problemas , e até agora nao consegui criar uma funçao pra cadastrar cliente que de sempre certo. estes dias o nome ficou pela metade . os videos ajudam muito , mais tem hora que eles mesmos nos confundem.

    • @JoaoVictor-wz5vq
      @JoaoVictor-wz5vq 2 года назад +1

      e os meus que deram if e else,e depois foram para recursao,dps array,string e ponteriro,pulando for,while e etc,ai vc vai procurar video no youtube,a maioria em com esses recursos q eles n deram,minha turma ta tendo q se virar pra n se ferrar nesse conteudo kkkkkkk

  • @Moderador_Civilizado
    @Moderador_Civilizado 4 года назад +5

    a função é perigos, mas o quê acontece? por quê é perigosa?

    • @programeseufuturo
      @programeseufuturo  4 года назад +5

      O problema é semelhante ao uso do scanf sem indicar a quantidade máxima de caracteres. Contudo, enquanto o scanf permite contornar esse problema, a função gets não possui nenhuma forma adicional de proteção. Ao ler dados, esses dados vão inicialmente para um buffer e esse buffer possui um tamanho limitado que pode ser excedido ao usar gets.
      O perigo reside no fato de que o estouro do buffer pode ser provocado e utilizado para propagação de ataques. Não sou especialista em segurança digital, mas encontrei uma informação interessante neste link: qastack.com.br/programming/1694036/why-is-the-gets-function-so-dangerous-that-it-should-not-be-used
      Segundo o autor, "O primeiro worm da Internet (o Morris Internet Worm ) escapou cerca de 30 anos atrás (02/11/1988) e usou gets(), um estouro de buffer como um de seus métodos de propagação de um sistema para outro. O problema básico é que a função não sabe qual o tamanho do buffer, portanto continua lendo até encontrar uma nova linha ou encontrar um EOF (de End Of File - fim do arquivo) e pode exceder os limites do buffer que recebeu."
      Gets foi oficialmente removido do padrão C em 2011, apenas continua funcionando, com avisos, por questão de compatibilidades com sistemas mais antigos.

    • @caiogr2386
      @caiogr2386 6 месяцев назад

      Por causa da vulnerabilidade chamada "buffer overflow".

  • @tortaimpulsiva1294
    @tortaimpulsiva1294 3 года назад +4

    se não devemos usar então por que ensinou?kkk

    • @programeseufuturo
      @programeseufuturo  3 года назад +4

      Porque se eu não ensinasse provavelmente alguém perguntaria por ela rsrsrs.
      Há muito material desatualizado na internet com ela.

    • @BreachBusters
      @BreachBusters 2 года назад +10

      1 - Pra conhecimento, a gente precisa entender o passado pra construir o futuro.
      2 - Para segurança, pode não ser mais o caso do gets pq o C99 não oferece mais suporte, mas imagine que você se depare com isso num código que esta lendo... de um colega de equipe...Nunca subestime o conhecimento, seja lá como ele apareça.

    • @antonnelly
      @antonnelly Год назад

      @@BreachBusters falou tudo.

    • @edgardmacfadden2372
      @edgardmacfadden2372 10 месяцев назад

      @@BreachBusters Obg por esclarecer, meu clang não tava aceitando o gets