Arkadaşlar soru şu. Program 0-10 arasında rastgele sayı tutucak bildikten sonra Y derse aynen tekrar başlayacak. Ama şu program excelent dedikten sonra Y yapınca tekrar excellent yazıyor. Nedenini bir türlü anlayamadım.
fflush() fonksiyonu scanf kullanımında önce buffer'da kalmış verileri silmeye yardımcı olur. scanf genelde char ile yaptığı işlemlerde güvenilir olmuyor.
şöyle ilginç bir yöntem var. scanf(" %c",&k); yani % işaretinden önce bir boşluk bırak.
fflush'ın çalışmamasının nedeni de büyük ihtimalle fflush(stdin); şeklinde yazılması gerektiği için benim hatam birazcık. :D
sen boşluk bırakma yöntemini bir dene olmazsa kısmet.
Şimdi burada 2 durum bulunuyor. 1.si ilk scanf inde integer mı değil mi kontrolü yok. kullanıcı excellenti gördükten sonra sayı değil de harfe basmaya devam ederse sonsuza kadar excellent yazısını görecektir. 2. her bir enter bir newline character dir. her bir karakter ise scanf için bir veridir. Newline entera bastığında oluşur.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.