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

  • L- Crysis

    L- Crysis

    30 Aralık 2011
  • monkophile

    monkophile

    25 Temmuz 2007
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014