470 likes | 819 Views
Chapter 9 – Biçimlendirilmiş Giriş/Çıkış. Outline 9.1 Giriş 9.2 Akışlar ( Streams ) 9.3 printf ile çıkışı biçimlendirmek 9.4 Tam sayıları yazdırmak 9.5 Ondalıklı sayıları yazdırmak 9.6 String ve karakteri yazdırmak 9.7 Diğer dönüşüm belirteçleri
E N D
Chapter 9 – Biçimlendirilmiş Giriş/Çıkış Outline 9.1 Giriş 9.2 Akışlar (Streams) 9.3 printf ile çıkışı biçimlendirmek 9.4 Tam sayıları yazdırmak 9.5 Ondalıklı sayıları yazdırmak 9.6 String ve karakteri yazdırmak 9.7 Diğer dönüşüm belirteçleri 9.8 Alan genişliği ve duyarlılık ile yazdırmak 9.9 printf Biçim-Kontrol Dizesinde bayrakları Kulanmak 9.10 Çıkış Dizilerini ve Hazır Bilgileri(Literal) yazdırmak 9.11 scanf ile Girişi Biçimlendirmek
Objectif • Bu bölümde, şunları öğreneceksiniz: • Giriş ve Çıkış Akışları • Bütün print formatlarını kullanabilmek • Bütün input formatlarını kullanabilmek
9.1 Giriş • Bu Bölümde • Sunumun sonuçları(Presentation of results) • scanfveprintf • Akışlar (Streams (input ve output)) • gets, puts, getchar, putchar (<stdio.h> içindeki)
9.2 Akışlar • Akışlar • Bir satırdaki karakterlerin sıralarını düzenler • Each line consists of zero or more characters and ends with newline character • Bütün satırlar sıfır yada daha fazla karakter içerir ve yeni satır karakteri ile biter • ANSI C en az 254 karakterlik satırları satırları desteklemesi gerekir • Bütün Giriş ve Çıkışları Gerçekleştirir. • Can often be redirected • Standartgiriş–Klavye • Standartçıkış–Ekran • Standarthata–Ekran • Daha fazlası 11 Bölümde mevcut
9.3 printf ile çıkışı biçimlendirmek • printf • Doğruçıkışformatı • Maddeleri(specification) dönüştürme:bayraklar, alangenişlikleri, vb. • Yuvarlamayı gerçekleştirir, kolonları sıraya koymaya yarar, sağ/sol hizalamaya yarar, karakterleri kelimesi kelimesine araya ekler, üstel (exponential) format, onaltılık (hexadecimal) format, vesabit genişlik sağlar • Format • printf(format-kontrol-string, diğer-argumanlar); • Format kontrol string: çıkış formatını tanımlar • Diğer-argumanlar: biçim kontrol dizisindeki her dönüşüm tarafının karşılığıdır. • Her dönüşüm tarifi biir tüzde işareti ile başlar ve bir dönüşüm belirteci ile sonlanır.
9.4 Tam sayıları yazdırmak • Tam sayı (Integer) • Bütün sayılar (virgüllü olmayanlar): 25, 0, -9 • pozitif, negatif, ya dasıfır
455 455 455 -455 32000 2000000000 707 455 4294966841 1c7 1C7 Program Ouptut
9.5 Ondalıklı sayıları yazdırmak • Ondalıklı sayılar • Ondalıklı kısım içerir (33.5) • Üssel yazılım biçim • 150.3şu şekilde1.503 x 10²gösterilir. • 150.3şu şekilde1.503E+02gösterilir, üssel • e ya da E kullanılır • f– dönüşüm beliteci, her zaman noktanın solunda en az bir basamakyazdırır. • g (or G) – dönüşüm beliteci,bir birini izleyen sıfırları yazdırmadan e(E) ya da f biçimindeyazdırır. • Üssel yazılım biçimine çevrildiğinde üs -4 ten küçüktür, • Ondalıklı sayılar için kullanılan tüm belirteçlerin aksi belirtilmedikçe 6 duyarlılıgına sahip olduğunu hatırlayınız.
fig09_04.c Program Output 1.234568e+006 1.234568e+006 -1.234568e+006 1.234568E+006 1234567.890000 1.23457e+006 1.23457E+006
9.6 String ve karakteri yazdırmak • c • charargumanını yazdırmak için kullanılır • String in ilk karakterini yazdırmak için kullanılmaz. • s • Cahar göstericilerine ihtiyaç duyar. • Karakterleri Null (‘\0’) oluncaya kadar yazdırır. • charargumanını yazdırmak için kullanılamaz • Remember • Karakter sabitleri için tek tırnak kullanılır (‘z’) • Stringler için çift tırnak kullanılır (“z”)
fig09_05.c A This is a string This is a string This is also a string
9.7 Diğer dönüşüm belirteçleri • p • Göstericinin değerini gösterir (adresini) • n • O andaki printf ifadesinde yazdırılan karakter sayısını tutar • Değerin tutulduğu tamsayı değişkenini gösteren bir gösterici alır • %ndönüşüm belirteci ile hiç birşey yazdırılamaz. • bütünprintfçağırımı değer döndürür • Sayı karakterleri çıkışı • Eyer hata oluşursa negatif sayı • % • Yüzde işaretlerini yazdırmak için kullanılır • %%
The value of ptr is 0012FF78 The address of x is 0012FF78 Total characters printed on this line: 38 This line has 28 characters 28 characters were printed Printing a % in a format control string Program Output
9.8 Alan genişliği ve duyarlılık ile yazdırmak • Alan Genişliği • Verinin yazdırılacağı alanın kesin boyutları alan genişliği ile belirlenir. • Eğer alan genişliği yazdırılacak veriden büyükse, veri o alan içinde otomatik olarak sağa yaslanacaktır. • Alan genşliğini belirten bir tamsayı, dönüşüm tarifi içinde yüzde işareti (%) ile dönüşüm belirteci arasına yerleştirilir. • %4d–alan genişliği4 olur
9.8 Alan genişliği ve duyarlılık ile yazdırmak • Duyarlılık • Anlamı veri türüne bağımlı olarak değişir • Tam sayılar ( varsayılan deüğer(default)1) • Eğer yazdırılan değer belirlenen duyarlılıktan daha az basamağa sahipse,toplam basamak sayısı duyarlılığa eşit olana kadar yazdırılan değerin önüne sıfır eklenir. • Ondalıklı sayılar • Ondalık kısımda yazdırılacak basamak sayısıdır (evef) • G /g– yazdırılacak önemli basamakların maksimum sayısıdır. • Strings • Stringten yazdırılacak en fazla karakter sayısıdır. • Format • %işareti ile dönüşüm belirteci arası (.) ve duyarlılığı belirten bir tam sayı değeri yerleştirirlir. %.3f
9.8 Alan genişliği ve duyarlılık ile yazdırmak • Alan genişliği ve duyarlılık • Aşağıdaki şekilde tanımlanabilir. • %width.precision %5.3f • Negatif alan genişliği–sola yaslanır • pozitifalan genişliği–sağa yaslanır • Duyarlılık pozitif olmak zorunda • Biçim kontrol dizesinden sonra gelen arguman listesi içinde tamsayı deyimleri olarak belirtilebilir. • Alan genişliği ya da duyarlılığı yerine yıldız karakteri (*) yerleştirilir. • Eşleşen int argümanı hesaplanır ve yıldız işareti yerine kullanılır • örnek: printf( "%*.*f", 7, 2, 98.736 );
1 12 123 1234 12345 -1 -12 -123 -1234 -12345 Program Output
Using precision for integers 0873 000000873 Using precision for floating-point numbers 123.945 1.239e+002 124 Using precision for strings Happy Birth Program Output
9.9 printf Biçim-Kontrol Dizesinde bayrakları Kulanmak • Bayraklar • Biçim kontrol dizesi içinde bir bayrak kullanmak için, bayrağı yüzde işaretinin hemen sağına koymak gerekir. • Birden fazla bayrak tek bir dönüşüm belirteci içinde birleştirilir.
fig09_11.c Programın çıktısı hello 7 a 1.230000 hello 7 a 1.230000
fig09_12.c Programın çıktısı 786 -786 +786 -786
fig09_13.c Programın çıktısı 547 -547
fig09_14.c Programın çıktısı 02623 0x593 0X593 1427 1427.00
fig09_15.c Programın çıktısı +00000452 000000452
9.10 Çıkış Dizilerini ve Hazır Bilgileri(Literal) yazdırmak • Hazır bilgileri bastırmak • Çoğu karakterler bu şekilde yazdırılır. • Biçim kontrol dizesini sınırlandıran tırnak işareti gibi(“) sorunlu bazı karakterler vardır. • Yeni satır sekme gibi çeşitli kontrol karakteri , çıkış sıraları ile temsil edilmelidir. • Bir çıkış sırası ters bölü (\) sonra, bir çıkış karakteri ile oluşturulur.
9.11 scanf ile Girişi Biçimlendirmek • scanf • Giriş formatı • Yaptıkları • Bütün veri türlerinin girişini sağlar. • Belirli karakterlerin girişini sağlar. • Belirli karakterlerin atlanması sağlar. • Format • scanf(format-kontrol-string, diğer-argumanlar); • Format-kontrol-string • Giriş biçimini tanımlar • diğer-argumanlar • Gösterici değişkenlerinin saklanıldığı yerdir.
9.11 scanf ile Girişi Biçimlendirmek • Tarama kümeleri • Köşeli parantez [] içine yazılmış karakter kümesidir • Yüzde% işaretinden sonra yazılır • Giriş akışındaki karakterler arasında tarama kümesi içinde belirtilenlerle eşleşenleri tarar • Herhangi bir anda karakter eşlemesi olduğunda, eşlenen karakter, tarama kümesinin ilgili argümanı olan karakter dizisini gösteren gösterici içine depolanır. • Tarama kümesi, karakter almayı tarama kümesi içinde yer almayan ilk karakterle karşılaştığında durdurur. • Ters Tarama Kümeleri • Düzeltme imi kullanılır.^: [^aeiou] • Ters bir tarama kümesi içinde bulunan bir karakter ile karşılaşıldığında giriş sonlanır. • Atlanan karakterler • Scanf gereksiz karakterleri eleyemez. Bu sebepten , scanf atama bastırma karakteri olan * karakterini sunar. • Format kontrolu iceren karakterler atlanır.
fig09_18.c Program Output Enter seven integers: -70 -70 070 0x70 70 70 70 The input displayed as decimal integers is: -70 -70 56 112 56 70 112
fig09_20.c Program Output Enter a string: Sunday The input was: the character "S" and the string "unday"
fig09_21.c Program Output Enter string: ooeeooahah The input was "ooeeooa"
fig09_22.c Program Output Enter a string: String The input was "Str"
fig09_23.c Program Output Enter a six digit integer: 123456 The integers input were 12 and 3456
Enter a date in the form mm-dd-yyyy: 11-18-2003 month = 11 day = 18 year = 2003 Enter a date in the form mm/dd/yyyy: 11/18/2003 month = 11 day = 18 year = 2003 Program Output