Giriş Düzeni
Çıktı düzeni dersinde anlatılanlara benzer şekilde, girişten gelen verilerin düzeni de belirtilebilir. Bu düzen; hem okunması istenen bilgiyi, hem de gözardı edilmesi istenen bilgiyi belirtebilir.
Düzen dizgisi olarak şimdiye kadar yaptığımız gibi " %s" kullanıldığında, okunmakta olan değişkenin türüne en uygun olan düzende okunur. Örneğin aşağıdaki readf çağrılarının ikisi de aynı şekilde çalışır ve ikisi de girişten bir kesirli sayı okur:
double sayı; readf(" %s", &sayı); readf(" %f", &sayı);
Giriş için kullanılan düzen dizgisi, C'deki scanf işlevinin düzen dizgisine çok benzer.
Düzen dizgisi içinde üç tür bilgi bulunabilir:
- boşluk karakteri: girişteki sıfır veya daha fazla boşluk karakteri anlamına gelir ve onların okunup gözardı edilmelerini sağlar
- herhangi bir karakter: girişte aynen bulunması beklenen bir karakteri ifade eder ve onun okunup gözardı edilmesini sağlar
- düzen belirteci: önceki derstekilere benzer şekilde
%karakteriyle başlar ve girişten gelen karakterlerin hangi türde okunacaklarını belirler
O bilgiler sayesinde, girişten gelen veri içerisinden bizim için önemli olanlarını seçip çıkartmak ve geri kalanını gözardı etmek son derece kolaydır.
Ayrıntıya girmeden önce, bu üç tür bilgiyi kullanan bir örneğe bakalım. Girişte tek satır halinde şöyle bir bilgi bulunsun:
numara:123 not:90
O satır içerisinden bizim için önemli olan iki bilgi, öğrencinin numarası ve notu olsun; yani girişteki numara: ve not: gibi karakterlerin bizim için bir önemi bulunmasın. İşte o satır içinden öğrencinin numarasını ve notunu seçen ve geri kalanını gözardı eden bir düzen dizgisi şöyle yazılabilir:
int numara; int not; readf("numara:%s not:%s", &numara, ¬);
"numara:%s not:%s" düzen dizgisi içinde maviyle gösterdiğim bütün karakterler girişte aynen bulunmalıdırlar; onlar readf tarafından girişten okunup gözardı edilirler.
O düzen dizgisinde kullanılan tek boşluk karakteri, girişte o noktada bulunan bütün boşluk karakterlerinin gözardı edilmelerine neden olur.
% karakterinin özel anlamı nedeniyle, girişte % karakterinin kendisinin gözardı edilmesi istendiğinde %% şeklinde çift olarak yazılır.
Düzen karakterleri
d: onlu sistemde tamsayı
o: sekizli sistemde tamsayı
x: onaltılı sistemde tamsayı
f: kesirli sayı
s: türe uygun olan düzende
c: tek bir karakter; bu belirteç boşlukları da okur (gözardı edilmelerini önler)
Örneğin girişte 3 tane "23" bulunduğunu varsayarsak; değer, düzen belirtecine göre farklı olarak okunur:
int sayı_d; int sayı_o; int sayı_x; readf(" %d %o %x", &sayı_d, &sayı_o, &sayı_x); writeln("onlu olarak okununca : ", sayı_d); writeln("sekizli olarak okununca : ", sayı_o); writeln("onaltılı olarak okununca: ", sayı_x);
Girişine 3 defa "23" girdiğimiz halde, değerler farklı okunur:
onlu olarak okununca : 23 sekizli olarak okununca : 19 onaltılı olarak okununca: 35
Not: Çok kısaca; "23", sekizli düzende 2x8+3=19 değerinde, ve onaltılı düzende 2x16+3=35 değerindedir.
Problem
- Girişten yıl.ay.gün düzeninde bir tarih bilgisi gelsin. Ekrana kaçıncı ay olduğunu yazdırın. Örneğin 2009.09.30 geldiğinde 9 yazılsın.
D.ershane
Forum
Wiki
Projeler
Tanıtım
İletişim
Hakları