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

  • LaKe Lightroom Tutorials

    LaKe Lightro

    22 Temmuz 2014
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • ShoSho

    ShoSho

    20 Ocak 2010