💡Scanf Veri Alma Sorunu | C
C'deki kullanıcıdan veri alma metodu olan scanf hakkında bilgiler
Last updated
C'deki kullanıcıdan veri alma metodu olan scanf hakkında bilgiler
Last updated
© 2024 ~ Yunus Emre Ak ~ yEmreAk
Bir çok kodlamada scanf("%c",&x);
şeklinde veri talebinde bulunuyoruz. Bu verileri kullanıcıdan talep ederken eğer kullanıcı satır atlatıcı tuşa bastığında ENTER art arda olan scanf fonksiyonlarında girdi almada problemler oluşuyor.
Örneğin yukarıdaki koddaki gibi bir scanf kullanımında, kullanıcı sırasıyla 'a'
, 'b'
, 'c'
verilerini girmiş olsun. x
, y
,z
'yi ayrı ayrı ekrana bastığımızda çıktı şu şekilde olacaktır:
Programa 'a'
yazıp ENTER'a bastığımız zaman:
ENTER'ı da veri olarak yani '\n'
olarak algılıyor.
Elimizde 'a'
ve '\n'
karakterleri oluyor
İlk char
değişkenine 'a'
harfi, ikinci char
değişkenine '\n'
harfi atanıyor
İki karakter girdiğimizi zannederken program üç karakter aldığı için ekrana yazdırma işlemlerine geçiyor
Fark edildiği üzere İkinci eleman:
dan sonra bir satır atlatılmış. İşte bu '\n'
olarak ifade ettiğimiz ENTER'a basınca y
değişkenine atanan karakter.
Çözüm oldukça basit. scanf
'lerin içine "%c"
yerine " %c"
yazmak. Bu sayede fonksiyon SPACE, ENTER gibi özel karakterleri girdi olarak algılamıyor.
Yazdırılacak olan string değeri için 20 karakterlik bir alan ayırıp, ayrılan alanın sağına dayalı yazdırmak için kullanılmaktadır.
Görsel anlamda yazıları birbirine hizalamak için tercih edilmekte.
Önceki kullanım ile aynı şekilde 20 karakterlik bir alan ayırmakta lakin bu sefer çıktı, ayrılan alanın soluna dayalı şekilde yazılmakta.