💡Scanf Veri Alma Sorunu | C
C'deki kullanıcıdan veri alma metodu olan scanf hakkında bilgiler
🎯 Sorun Tanıyalım
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:
🤔 Neden Veri Almada Sorun Var
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, ikincichar
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ıncay
değişkenine atanan karakter.
💁♂️ Nasıl Engellenir
Çö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.
😕 Ya Bu %20s'in Olayı Nedir
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.
💡 Peki ya -%20s
Ö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.
Last updated