Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdio.h> > gets

gets() fonksiyonu

Bildirim

char* gets(char *str); (C11 ile kaldırıldı)

char* gets_s(char *str, rsize_t n); (C11)

Açıklama

Bir satır sonu karakteri bulunana veya dosya sonuna erişene kadar klavyeden girilen (stdin) karakterleri str ile gösterilen karakter dizisine yazar. Dizide okunan son karakterden hemen sonra boş bir karakter ('\0') yazılır.

Kaç tane karakter okunacağı bilinmediğinden bellek aşım ve güvenlik sorunu oluşturabileceğinden, gets() fonksiyonunun kullanımı kesinlikle önerilmez. Geriye dönük uyumluluk için C89 ve C99 standartlarında bırakılmıştır. C11 standardı ile birlikte tamamen kaldırılmıştır. Bu fonksiyon yerine get_s() veya fgets() fonksiyonunun kullanımı önerilmektedir.

gets_s() fonksiyonu bir satır sonu karakteri bulunana veya dosya sonuna erişene kadar klavyeden girilen (stdin) karakterleri str ile gösterilen karakter dizisine yazar. Dizide okunan son karakterden hemen sonra boş bir karakter ('\0') yazılır.

En fazla n-1 kadar karakteri str parametresi ile gösterilen karakter dizisine yazar ve her zaman sonlandırıcı boş karakteri ('\0') yazar (str NULL bir işaretçi değilse). Yeni satır karakteri bulunursa dikkate alınmaz ve ara belleğe yazılan karakter sayısına dahil edilmez.

Ayrıca, çalışma zamanında aşağıdaki hatalar tespit edildiğinde, yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:

  • N parametre değeri 0 ise,
  • N parametre değeri RSIZE_MAX değerinden büyük ise,
  • Str parametre değeri NULL bir işaretçi ise,
  • Str parametresine n-1 kadar karakter yüklendikten sonra satır sonu veya EOF değeri bulunamazsa.

Parametreler

str: Okunacak karakterlerin yazılacağı karakter dizisidir.

Dönüş değeri

Başarı durumunda yazılan karakter dizisi, hata durumunda ise NULL bir değer geri döndürülür.

Hataya dosya sonu neden olursa, stdin eof göstergesi ayarlanır. Eğer sorun başka bir hatadan kaynaklanıyorsa, stdin hata göstergesi ayarlanır.

Örnek


#include <stdio.h>

int main(void)
{
    char cdizi[40];

    printf("Bir karakter dizisi giriniz: ");
    gets(cdizi);

    printf("Girdiğiniz karakter dizisi: ");
    puts(cdizi);

    return 0;
}

Yukarıdaki örnekte, eğer "Bilgisayar" kelimesini girer ve ENTER tuşuna basarsanız, program aşağıdaki satırları ekrana yazar:

Bir karakter dizisi giriniz: 
Girdiğiniz karakter dizisi: Bilgisayar

Yukarıdaki program, klavyeden girilen karakter dizisini gets() fonksiyonu ile okur ve puts() fonksiyonu ile ekrana yazar.