DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Abi ne alakası var if'in içinde if var. Kaldı ki o ife girmeden önce scanf'le k'yı alıyorum zaten. Sorun başka bişey
Bu mesaja 2 cevap geldi. Cevapları Gizle
printf("excellent");satırından sonra
yapmayı dene bakalım.
Bu mesaja 1 cevap geldi. Cevapları Gizle
haklısın yanlış görmüşüm, kod düzgün görünüyor sorunu bulamadım
Yok abi olmuyo. fflush fonksihoynu ne? ilk defa kullandım derleme hatası veriyo, flush(); yazdım yine aynı şekil.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Olur böyle vakalar
şö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.
Bu mesajda bahsedilenler: @emregul.1994
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.
Buna göre aşağıdaki kod çalışmaktadır:
< Bu mesaj bu kişi tarafından değiştirildi recipe -- 7 Ağustos 2014; 18:39:10 >
Bu mesajda bahsedilenler: @emregul.1994