SORU
7 Kasım 2009, CUMARTESİ


Neden kullanılmamalıdır bu işlevi, çok tehlikeli olur.

gets işlevini kullanan bir C kodu derlemeye çalıştığımda bir uyarı alıyorum: warning: the gets function is dangerous and should not be used.

Bu koruma ve güvenlik yığını ile bir ilgisi hatırlıyorum, ama tam emin değilim. Birisi bu uyarı çıkarılması için yardım eder ve böyle bir uyarı yok niçin? gets "tehlikeli" o zaman neden biz bunu kaldırabilir mi? eğer öyleyse

CEVAP
7 Kasım 2009, CUMARTESİ


gets güvenli bir şekilde kullanmak için, tam olarak kaç kişi okuma olacak karakterler senin arabellek yeterince büyük hale getirebilir. Sadece tam olarak ne okuma ne olacağını biliyorsan.

gets, yerine imza olan fgets kullanmak istediğiniz

char* fgets(char *string, int length, FILE * stream);

(Eğer bütün bir satırı okurfgets, dizedeki '\n' bırakır; bununla başa çıkmak Zorundasınız.)

Dilin resmi bir parçası 1999 ISO C standardı bu, ama kaldı resmi olarak 2011 standart tarafından kaldırıldı. En C uygulamaları hala destek, ama en azından gcc kullanan herhangi bir kod için bir uyarı verir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • RFS Dan

    RFS Dan

    22 Temmuz 2014