Bu bölümde, sayısal değerlerin okunması sırasındaki scanf dönüşümleri açıklanmıştır.
%d dönüşümü seçmeli olarak onluk tabanda bir işaretli tamsayı ile eşleşir. Sözdizimi
strtol işlevinin
taban argümanının
10 değerli çağrısıyla aynı şekilde tanınır. (Bkz.
Tamsayıların Çözümlenmesi.)
%i dönüşümü bir tamsayı sabit için C dilinde tanımlı herhangi bir biçimdeki bir işaretli tamsayı ile seçmeli olarak eşleşir. Sözdizimi
strtol işlevinin
taban argümanının
0 değerli çağrısıyla aynı şekilde tanınır. (Bkz.
Tamsayıların Çözümlenmesi.) (Bu sözdizimindeki tamsayıları
printf işlevini
# im karakteri ve
%x,
%o veya
%d dönüşümlerinden biri birlikte kullanarak çıktılayabilirsiniz. Bkz.
Tamsayı Dönüşümleri.)
Örneğin, 10, 0xa, 012 dizgelerinin her birini %i dönüşümü altında birer tamsayı olarak okumalısınız. Bu dizgelerin her biri onluk tabanda 10 sayısıdır.
%o,
%u ve
%x dönüşümleri sırayla sekizlik, onluk ve onaltılık tabandaki işaretsiz tamsayılarla eşleşir. Sözdizimi
strtol işlevinin
taban argümanının sırasıyla
8,
10 veya
16 değerli çağrısıyla aynı şekilde tanınır. (Bkz.
Tamsayıların Çözümlenmesi.)
%X ve %x dönüşümleri eşanlamlıdır. Her ikisi de rakam olarak büyük ya da küçük harfleri tanır.
Öntanımlı tür, %d ve %i dönüşümleri için int *, diğer tamsayı dönüşümleri için unsigned int *’tir. Tamsayıların türleri için aşağıdaki tür değiştiricileri kullanabilirsiniz:
- hh
Argümanın signed char * veya unsigned char * türünde olduğunu belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
- h
Argümanın short int * veya unsigned short int * türünde olduğunu belirtir.
- j
Argümanın intmax_t * veya uintmax_t * türünde olduğunu belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
- l
Argümanın long int * veya unsigned long int * türünde olduğunu belirtir. İki l karakteri aşağıda açıklanan L karakteri gibidir.
Bu karakter %c veya %s dönüşümü ile birlikte kullanıldığında argümanın sırasıyla bir geniş karakter veya bir geniş karakterli dizgeye bir gösterici olduğunu belirtir. l değiştiricisinin bu kullanımı ISO C90 1. düzeltmesinde tanımlanmıştır.
- ll, L, q
Argümanın long long int * veya unsigned long long int * türünde olduğunu belirtir. (Bu tür GNU C derleyicisi tarafından desteklenen bir oluşumdur. Fazla uzun tamsayıları desteklemeyen sistemlerde bu değiştirici long int olarak değerlendirilir.)
q değiştiricisi 4.4 BSD’den gelmektedir. Bir long long int kimi zaman "quad" int olarak da isimlendirilir.
- t
Argümanın ptrdiff_t * türünde olduğunu belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
- z
Argümanın size_t * türünde olduğunu belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
%e,
%f,
%g,
%E ve
%G girdi dönüşümlerinin tümü birbirinin yerine kullanılabilir. Bunların tümü
strtod işlevindeki sözdizimi ile aynı sözdiziminde, seçimli olarak bir gerçek sayı ile eşleşir (Bkz.
Gerçek Sayıların Çözümlenmesi).
Gerçek sayı girdi dönüşümleri için öntanımlı argüman türü float *’dır. (Çıktı dönüşümlerinde öntanımlı tür double’dır ve öntanımlı argüman terfileri çerçevesinde bir float argüman double türe terfi ettirilir. Ama girdi dönüşümlerinde bu terfi uygulanmaz.) Gerçek sayıların türleri için aşağıdaki tür değiştiricileri kullanabilirsiniz:
- l
Argümanın double * türünde olduğunu belirtir.
- L
Argümanın long double * türünde olduğunu belirtir.
Yukarıdaki sayı çözümleme biçimlerinin tümü için isteğe bağlı bir ek
' imi vardır. Bu im kullanıldığında
scanf işlevi girdi dizgesinin o an geçerli yerelin sayı gruplama kurallarına uygun olacağını umar (Bkz.
Soysal Sayısal Biçimleme Parametreleri).
"C" veya "POSIX" yereli geçerli yerelse bir fark olmaz. Fakat diğer yerellerde bu dizge yerele özgü biçime uygun verilmiş olmalıdır. Aksi takdirde doğru biçimli en uzun önek işlenir.