C’de gets yerine fgets kullanın
Okulda verilen ödevi yapmaya çalışırken bu iki komut ile karşılaştım, sonra her ne kadar işime yaramadığını anladıysam da, ileride belki işime yarayabilir diye öğrenmiştim.İlk başta bir string tanımlayalım, 50 byte büyüklüğünde.
1 | char string[50]; |
Ardından istediğiniz yere : gets(string); yazın. Sizden scanf komutu gibi stringi doldurmanızı isteyecek. Fakat boşluklar da dahil. Uzun yazılar için birebir yani. Gets’e benzer birde fgets komutu vardır. Gets yerine fgets kullanmak da daha mantıklıdır. Çünkü gets string’in büyüklüğünü gözardı ediyor. Nasıl yani ?
Şöyle ki, örneğin gets ile 110-120 karakterlik bir cümle yazdıysanız, programınız sağlıklı çalışmaz, hata verir. Gets tüm yazdığınız karakterleri kaydetmeye çalışacak. Fakat bizim string’e ayırdığımız alan sadece 50 byte. Bu yüzden fgets’kullanmak daha mantıklı. Kullanımı da şu şekilde:
1 | fgets(string, sizeof(string), stdin); |
Burada string bildiğimiz string, sizeof(string) ise string’in büyüklüğü(byte olarak), stdin de standart input, yani klavyeden girdiğimiz veri. Stdin yerine de dilerseniz dosya adını da yazabilirsiniz. sizeof(string) yerine 100, 53, 134 gibi sayılar da yazabilirsiniz. Size bağlı. Bu yüzden fgets’i kullanmak daha iyi, çünkü belirleyici bir sayı var, onun geçmesine izin vermiyor.
Not:(Yazıda ingilizce kelimelerin Türkçe karşılığını bilmediğim için aynen öyle yazdım, string gibi.)
Yorumlar(2)
Son Yorumlar
Etiketler (r:30)
Tavsiyeler (r:5)