Muhtemelen Yeni Duyacağınız Kodlama İpuçları (C / C++)

-> Scanf 

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;




-> Peki neden böyle?
  Programa 'a' yazıp ENTER'a bastığımız zaman, ENTER'ı da veri olarak yani '\n' olarak algılıyor. Bu sebeple biz iki 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.


-> Nasıl engellenir?

 Çözüm oldukça basit. Scanf'lerin içine "%c" yerine " %c" yazmak. Bu sayede fonksiyon boşluk, satır atlatma gibi görünmeyen karakterleri girdi olarak algılamıyor.


-> Ya bu %20s de 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.

> Negatifi de var elbet "%-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.



Yorumlar

Popüler Yayınlar