Aşağıdaki bilgiler, gibi scanf_s
güvenli sürümler de dahil olmak üzere işlev ailelerinden herhangi biri scanf
için geçerlidir.
Karakter type
gerekli tek biçim alanıdır; isteğe bağlı biçim alanlarından sonra görünür. Karakter, type
ilişkili bağımsız değişkenin karakter, dize veya sayı olarak yorumlanıp yorumlanmayacağını belirler.
type
scanf
İşlev karakterleri
Karakter |
Beklenen giriş türü |
Bağımsız değişken türü |
Bağımsız değişken güvenli sürümde boyutlandırılsın mı? |
c |
Karakter. İşlevlerle scanf kullanıldığında, tek baytlık karakteri belirtir; işlevlerle wscanf kullanıldığında geniş karakteri belirtir. Normalde atlanan boşluk karakterleri belirtildiğinde c okunur. Diğer tür alanlarından farklı olarak, alan genişliği tanımlayıcısı en fazla değil tam karakter sayısını gösterir. Bir sonraki boşluk olmayan tek baytlık karakteri okumak için, öğesini kullanarak %1s bir sonraki boşluk olmayan geniş karakteri okuyun.%1ws |
char İşlevlerle kullanıldığında işaretçi, wchar_t işlevlerle scanf wscanf kullanıldığında işaretçi. |
Gerekli. Boyut, null sonlandırıcı için alan içermez. |
C |
Karşıt boyut karakteri. İşlevlerle scanf kullanıldığında geniş karakter belirtir; işlevlerle wscanf kullanıldığında tek baytlık karakteri belirtir. Normalde atlanan boşluk karakterleri belirtildiğinde C okunur. Diğer tür alanlarından farklı olarak, alan genişliği tanımlayıcısı en fazla değil tam karakter sayısını gösterir. Bir sonraki boşluk olmayan tek baytlık karakteri okumak için, öğesini kullanarak %1s bir sonraki boşluk olmayan geniş karakteri okuyun.%1ws |
wchar_t İşlevlerle kullanıldığında işaretçi, char işlevlerle scanf wscanf kullanıldığında işaretçi. |
Gerekli. Boyut bağımsız değişkeni null sonlandırıcı için alan içermez. |
d |
Ondalık tamsayı. |
işaretçisi int . |
Hayır |
i |
Tamsayı. Giriş dizesi "0x" veya "0X" ile başlıyorsa onaltılık, dize "0" ile başlıyorsa sekizlik, aksi takdirde ondalık. |
işaretçisi int . |
Hayır |
o |
Sekizli tamsayı. |
işaretçisi int . |
Hayır |
p |
Onaltılık basamaklarda bir işaretçi adresi. Okunan basamak sayısı üst sınırı, makine mimarisine bağlı olarak işaretçinin boyutuna (32 bit veya 64 bit) bağlıdır. "0x" veya "0X" ön ek olarak kabul edilir. |
işaretçisi void* . |
Hayır |
u |
İşaretsiz ondalık tamsayı. |
işaretçisi unsigned int . |
Hayır |
x |
Onaltılık tamsayı. |
işaretçisi int . |
Hayır |
e , E , f , , F , g , G |
İsteğe bağlı işaret (+ veya -), ondalık ayırıcı içeren bir veya daha fazla ondalık basamak serisi ve isteğe bağlı üs ("e" veya "E") ve ardından isteğe bağlı olarak imzalanan bir tamsayı değeri içeren kayan nokta değeri. |
işaretçisi float . |
Hayır |
a , A |
İsteğe bağlı ondalık ayırıcı içeren bir veya daha fazla onaltılık basamak serisinden oluşan kayan nokta değeri ve ardından bir üs ("p" veya "P") ve ardından ondalık değer. |
işaretçisi float . |
Hayır |
n |
Akıştan veya arabellekten okunan giriş yok. |
İşlevlere veya wscanf işlevlere int yapılan geçerli çağrıda scanf akıştan veya arabellekten bu noktaya kadar başarıyla okunan karakterlerin depolandığı öğesine işaret eden işaretçi. |
Hayır |
s |
İlk boşluk karakterine kadar dize (boşluk, sekme veya yeni satır). Boşluk karakterleriyle sınırlandırılmayan dizeleri okumak için Genişlik Belirtimi'ndescanf açıklandığı gibi köşeli ayraç ([ ] ) kümesini kullanın. |
İşlevlerle scanf kullanıldığında, tek baytlık karakter dizisine işaret eder; işlevlerle kullanıldığında wscanf geniş karakter dizisine işaret eder. Her iki durumda da, karakter dizisi giriş alanı ve otomatik olarak eklenen null karakteri sonlandırmak için yeterince büyük olmalıdır. |
Gerekli. Boyut, null sonlandırıcı için alan içerir. |
S |
İlk boşluk karakterine (boşluk, sekme veya yeni satır) kadar ters boyutlu karakter dizesi. Boşluk karakterleriyle sınırlandırılmayan dizeleri okumak için Genişlik Belirtimi'ndescanf açıklandığı gibi köşeli ayraç ([ ] ) kümesini kullanın. |
İşlevlerle scanf kullanıldığında geniş karakterli diziyi ifade eder; işlevlerle wscanf kullanıldığında tek baytlı diziyi gösterir. Her iki durumda da, karakter dizisi giriş alanı ve otomatik olarak eklenen null karakteri sonlandırmak için yeterince büyük olmalıdır. |
Gerekli. Boyut, null sonlandırıcı için alan içerir. |
Gerekirse boyut bağımsız değişkenleri, uygulandıkları bağımsız değişkenin hemen ardından parametre listesinde geçirilmelidir. Örneğin aşağıdaki kod:
char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);
içinde uzunluğu en fazla 10 string1
olan bir dizeyi ve içinde en fazla 8 string2
uzunluğa sahip bir dize okur. Boşluk null sonlandırıcı için ayrılmış olması gerektiğinden arabellek boyutları genişlik belirtimlerinden en az bir tane daha fazla olmalıdır.
Biçim dizesi, işlevin tek baytlık karakteri veya geniş karakter sürümü kullanıldığından bağımsız olarak tek baytlı veya geniş karakterli girişi işleyebilir. Bu nedenle, işlevler ve wscanf
işlevlerle scanf
tek baytlık veya geniş karakterleri okumak için biçim tanımlayıcılarını aşağıdaki gibi kullanın.
Karakteri farklı okumak için |
Bu işlevi kullan |
Bu biçim tanımlayıcılarıyla |
tek bayt |
scanf işlevleri |
c , hc veya hC |
tek bayt |
wscanf işlevleri |
C , hc veya hC |
geniş |
wscanf işlevleri |
c , lc veya lC |
geniş |
scanf işlevleri |
C , lc veya lC |
İşlevler ve wscanf
işlevlerle scanf
dizeleri taramak için yukarıdaki tabloyu ve C
yerine c
biçim türü tanımlayıcılarıyla s
S
kullanın.
Ayrıca bkz.
scanf
, _scanf_l
, wscanf
, _wscanf_l