Giriş Düzenleme
Giriş Düzenleme
Giriş fonksiyonları sırasıyla, verileri standart giriş akışından alırlar ve veriyi standart çıkış akışından çıkartırlar. scanf biçimlendirme yeteneklerini detaylı bir şekilde göreceğiz.
Giriş Biçimlendirme
Giriş biçimlendirme, scanf sayesinde yapılır. Her scanf ifadesi, girilecek verinin biçimini tanımlayan bir biçim kontrol dizesi içerir. Biçim kontrol dizesi dönüşüm belirteçleri ve bilgi karakterleri içerir. scanf fonksiyonu aşağıdaki giriş biçimlendirme yeteneklerine sahiptir:
- Her tipte veriyi almak.
- Bir giriş akışındaki belli karakterleri almak.
- Giriş akışındaki belli karakterleri atlamak.
scanf ( biçim kontrol dizesi, diğer argümanlar);
biçim kontrol dizesi: Verinin biçimini tarif eder
diğer argümanlar: Verinin depolanacağı gösteren göstericilerdir.
d Onluk sistemde işaretli tamsayı okur.
i Onluk, sekizlik ya da onaltılık sistemde işaretli tamsayı okur.
o Sekizlik sistemde bir tamsayı okur.
u Onluk sistemde işaretsiz bir tamsayıyı okur.
x-X Onaltılık sistemde bir tamsayı okur.
h-l Herhangi bir tamsayı dönüşüm belirtecinden önce yerleştirildiğinde, short ya da long bir tamsayının girileceğini belirtir.
l-L double ya da long double bir değerin girileceğini belirtir.
c Bir karakter okur. Sonlandırıcı null (‘\0’) eklenmez.
s Bir string okur. stringi ve sonlandırıcı null karakteri depolamaya yetecek kadar
p Bir adresi okur.
n Tamsayıyı gösteren bir göstericidir.
% Girilen verideki yüzde işaretini(%) atlar.
Tamsayı Girişi
#include <stdio.h> int main( ) { int a, b, c, d, e, f, g; printf( "Yedi tamsayi girin: " ); scanf( "%d%i%i%i%o%u%x", &a, &b, &c, &d, &e, &f, &g ); printf( "Girilen sayilar, onluk sistemde tamsayilar" "olarak gosterilecek:\n" ); printf( "%d %d %d %d %d %d %d\n", a, b, c, d, e, f, g ); return 0; }
Ondalıklı Sayı Girişi
#include <stdio.h> int main( ) { double a, b, c; printf( "Uc ondalikli sayi girin: \n" ); scanf( "%le%lf%lg", &a, &b, &c ); printf( "Farkli ondalikli\n" ); printf( "sayi gosterimleri:\n" ); printf( "%f\n%f\n%f\n", a, b, c ); return 0; }
Tarama Kümesi Kullanma
Tarama kümesi, karakter almayı tarama kümesi içinde yer almayan ilk karakterle karşılaşıldığında durdurur. Eğer giriş akışındaki ilk karakter tarama kümesindeki karakterlerle eşleşmezse, dizide yalnızca null karakter depolanır. [aeiou] tarama kümesini kullanarak, giriş akışında sesli harfleri taramaktadır.
#include <stdio.h> int main( ) { char z[ 9 ]; printf( "Bir string girin: " ); scanf( "%[aeiou]", z ); printf( "\"%s\" girdiniz.\n", z ); return 0; }
Ters Tarama
Ters bir tarama kümesi içinde bulunan bir karakterle karşılaşıldığında giriş sonlanır.
#include <stdio.h> int main( ) { char z[ 9 ] = { '\0' }; printf( "Bir string girin: " ); scanf( "%[^aeiou]", z ); printf( "Girilen string: \"%s\"\n", z ); return 0; }
Alan Genişliği
Verinin yazdırılacağı alanın kesin boyutları alan genişliği ile belirlenir.
#include <stdio.h> int main( ) { printf( "%4d\n", 1 ); printf( "%4d\n", 12 ); printf( "%4d\n", 123 ); printf( "%4d\n", 1234 ); printf( "%4d\n\n", 12345 ); printf( "%4d\n", -1 ); printf( "%4d\n", -12 ); printf( "%4d\n", -123 ); printf( "%4d\n", -1234 ); printf( "%4d\n", -12345 ); return 0; }
Çeşitli tiplerdeki verileri yazdırmak için duyarlık kullanmak
#include <stdio.h> int main( ) { int i = 873; double f = 123.94536; char s[ ] = "Turk Muhendis"; printf( "Tam sayilarda duyarlik kullanimi\n" ); printf( "\t%.4d\n\t%.9d\n\n", i, i ); printf( "Ondalikli sayilarda duyarlik kullanimi\n" ); printf( "\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f ); printf( "Stringlerde duyarlik kullanimi\n" ); printf( "\t%.11s\n", s ); return 0; }
Noktadan sonra 3 basamak,Sayı sağa dayalı bir biçimde, 9 basamak genişliğinde
printf ( “ %9.3f ” , 123.456789 ) ;
alan genişliği 7, duyarlık için 2 kullanır ve sağa dayalı bir biçimde 98.74 yazdırır.
printf ( “ %*.*f ” , 7 , 2 , 98,736 ) ;