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:
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.