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.