Şimdi Ara

C'de 2 defa karakter girişi yardım.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
7
Cevap
0
Favori
715
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arka arkaya 2 karakter girilmesini istediğimde 1. char değişkeni girildikten sonra otomatik 2.değişkene de ayni değeri atıyor.

    Örneklersek:

    printf("1. karakteri gir:: ");
    scanf("%c", &kar1);
    printf("2. karakteri gir: );
    scanf("%c", &kar2);
    printf("%c %c", kar1,kar2);

    Bunun çıktısı:

    1.karakteri gir: * (yıldızı ben girdim)
    2.karakteri gir: * (?)

    ve program 2. karakterden itibaren direk sonlanıyor. Bu durumu nasıl çözeriz?
    Şekil çizmeli sorularda karşıma çıkıyor genelde.



  • en alta getch(); koy
  • quote:

    Orijinalden alıntı: deoxriboz

    en alta getch(); koy


    Koydum ve değişen birşey yok...
  • return dan önce while(1) koy
  • Bildiğimiz gibi Enter tuşu da bir karakter.

    İlk scanf çalıştırılırken, sen *'a bastıktan sonra enter'a basıyorsun. Enter her ne kadar scanf için çıkış karakteri olsa da standart input flush edilmiyor ve ikinci scanf çağırışında enter karakteri flush edilmediği için enter ikinci karakterin olmuş oluyor. Bunu engellemek için standart input'u flush edebilirsin.

    fflush(stdin);

    Veya araya getch() gibi bir kod koyarak, enter tuşunu boşa alabilirsin.
  • Hatta böyle anlam veremediğin durumlarda ekrana karakteri bastırmak yerine karakterin sayısal değerini bastırırsan kaçırdığın noktaları daha rahat yakalayabilirsin.

    printf("%c %c", kar1,kar2);

    değil de

    printf("%d %d", kar1,kar2);

    Göreceksin ki kar2 = 10, yani enter'ın ASCII değeri.
  • quote:

    Orijinalden alıntı: qamyoncu

    Bildiğimiz gibi Enter tuşu da bir karakter.

    İlk scanf çalıştırılırken, sen *'a bastıktan sonra enter'a basıyorsun. Enter her ne kadar scanf için çıkış karakteri olsa da standart input flush edilmiyor ve ikinci scanf çağırışında enter karakteri flush edilmediği için enter ikinci karakterin olmuş oluyor. Bunu engellemek için standart input'u flush edebilirsin.

    fflush(stdin);

    Veya araya getch() gibi bir kod koyarak, enter tuşunu boşa alabilirsin.

    Anladım, teşekkürler.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.