sacnf Genişlik Belirtimi

Bu bilgileri yorumlama biçim dizeleri uygulanır scanf ailesi işlevlerini, güvenli sürümleri gibi scanf_s.Bu İşlevler normalde giriş akışı simgeleri bir dizi bölünmüş varsayalım.Belirteçleri doğal sonuna sayısal metne dönüştürülemez ilk karakterin gösterildiği gibi bir sayısal veri türü sayısal türleri söz konusu olduğunda veya boşluk (boşluk, sekme veya satır) tarafından ayrılır.Ancak, doğal bir belirteç sonundan önce durdurmak için giriş ayrıştırma neden genişlik belirtimi kullanılabilir.

Genişliği belirtimi oluşan karakter arasında % ve pozitif bir tamsayı olarak adlandırılan içerebilir Tür alanında belirleyici genişliği alan ve ayrıca değiştiriciler alanın türü düşünülebilir, alanın boyutu gösteren bir veya daha fazla karakter bir olup olmadığının göstergesi gibi tamsayı türü kısa veya uzun.Bu tür karakterler boyutu önek olarak adlandırılır.

Genişliği alanı

Genişliği Bu alan için okumak için en fazla karakter sayısını denetleme pozitif bir ondalık tamsayı bir alandır.En fazla genişliği karakterler dönüştürülür ve ilgili olarak saklanan argument.Daha az genişliği karakterler olabilir bir boşluk karakteri (boşluk, sekme veya satır) veya verilen biçimi göre dönüştürülen karakter önce oluşup oluşmayacağını okuma genişliği ulaşıldığında.

Bu işlevlerin güvenli sürümlerini tarafından gerekli arabellek boyutu bağımsız gelen birbirinden ayrı ve genişlik belirtimi (yani, scanf_s, wscanf_s, vb..). Aşağıdaki örnekte, 20, genişlik belirtimidir olduğunu gösteren en çok 20 karakter girdiden okunacağını.Arabellek uzunluğu, olası 20 karakter artı null Sonlandırıcı yer içeren yani 21:

char str[21];
scanf_s("%20s", str, 21);

Yoksa genişliği alanı kullanılmaz, scanf_s tüm belirteç dize okumaya çalışacaktır.Belirtilen boyutta tüm belirteç tutabilecek kadar büyük değilse, hiçbir şey hedef dizesi olarak yazılır.Yoksa genişliği alanı belirtilmişse, ilk genişliği belirteci karakterler hedef dizesi null Sonlandırıcı ile yazılır.

Boyutu öneki

İsteğe bağlı önekleri h, m, le, I64, ve m boyutunu belirtmek argument (uzun veya kısa, tek baytlı karakter veya bunları değiştiren türü karakter bağlı olarak geniş karakter).Bu biçim belirtimi karakterleri karakter türü ile kullanılan scanf veya wscanf aşağıdaki tabloda gösterildiği gibi değişkenleri yorumuyla belirtmek için İşlevler.Önekini yazın I64 Microsoft uzantısı olan ve ANSI uyumlu değil.Yazı karakterlerini ve anlamları "Scanf işlevleri için karakterleri yazın" tablosunda açıklanan scanf Türü Alan Karakterleri.

[!NOT]

h, m, ve m veri türü ile birlikte kullanıldığında Microsoft uzantıları önekleri olan char.

Scanf ve wscanf biçim türü belirteçleri için boyut önekleri

Belirtmek için

Önek kullanın

Tür belirticisiyle

double

m

e, E, f, g, or G

uzun çift (aynı çift)

L

e, E, f, g, or G

uzun tamsayı

m

d, i, o, x, or X

işaretsiz uzun tamsayı

m

u

long long

ll

d, i, o, x, or X

short int

h

d, i, o, x, or X

işaretsiz kısa tamsayı

h

u

__int64

I64

d, i, o, u, x, or X

Tek baytlı karakter ilescanf

h

c or C

Tek baytlı karakter ilewscanf

h

c or C

Geniş karakter ilescanf

m

c or C

Geniş karakter ilewscanf

m

c, or C

Tek baytlı – ile karakter dizesiscanf

h

s or S

Tek baytlı – ile karakter dizesiwscanf

h

s or S

Geniş karakter dizesi ilescanf

m

s or S

Geniş karakter dizesi ilewscanf

m

s or S

Aşağıdaki örnekleri kullanın h ve m ile scanf_s işlevler ve wscanf_s işlevleri:

scanf_s( "%ls", &x, 2 );     // Read a wide-character string
wscanf_s( "%hC",&x, 2 );    // Read a single-byte character

Güvenli olmayan bir işlevi kullanarak, scanf ailesi, önceki bağımsız değişken arabelleği uzunluğunu gösteren boyut parametresini atlayın.

Okuma sınırlandırılmamış dize

Boşluk ile ayrılmış değil dizeleri okumak için karakter, köşeli ayraçlar içinde karakter kümesi ([]) için yerine s (dize) tür karakteri.Parantez içindeki karakter kümesi için Denetim dize olarak geçer.Karşılık gelen bir giriş alanı denetim dizisi içinde görünmez ilk karakter için okuyun.İlk karakter kümesindeki şapka işareti olup olmadığını (^), etkisini tersine: karakter kümesi geri kalanı gibi görünüyor ilk karakter için giriş alanı okuyun.

Dikkat edin % [a-z ve % [z-a eşdeğer olarak yorumlanan %[abcde...z.Ortak bir budur scanf işlevini uzantı ancak ANSI standart onu istemediğini Not.

Okuma Sonlandırılmamış dize

Sondaki boş karakter ('\0') depolamadan dizeyi saklamak için belirtim kullanmak %nc yere n onluk tamsayıdır.Bu durumda, c türü karakter bağımsız değişkeni bir karakter dizisi için bir işaretçi olduğunu gösterir.Sonraki n karakter belirtilen konuma girdiden okunur ve hiç boş karakter ('\0') eklenir.Yoksa n belirtilmezse, varsayılan değer 1'dir.

Scanf alan okuma durduğunda

scanf İşlevi, her bir giriş alanı, karakter tarar.Çeşitli nedenlerle için bir boşluk karakteri ulaşmadan önce belirli bir giriş alanı okuma durabilir:

  • Belirtilen genişlik ulaşıldı.

  • Sonraki karaktere dönüştürülemez belirtildiği gibi.

  • Bir sonraki karakteri çakışıyor bir karakterle eşleştirmek için beklenen denetim.

  • Bir sonraki karakteri verilen karakter kümesinde görünmesini başarısız olur.

Herhangi bir nedenle zaman scanf işlevini durdurur bir giriş alanı okuma, sonraki giriş alanını ilk okunmamış karakteri başlamak için kabul edilir.Çakışan bir karakter varsa, kabul edilir okunmamış ve sonraki girdi alanına ilk karakteri veya giriş akışı üzerinde sonraki işlemleri ilk karakteri.

Ayrıca bkz.

Başvuru

scanf, _scanf_l, wscanf, _wscanf_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

Biçim Belirtimi Alanları: scanf ve wscanf İşlevleri

scanf Türü Alan Karakterleri