scanf
, _scanf_l
, wscanf
, _wscanf_l
Standart giriş akışından biçimlendirilmiş verileri okur. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. scanf_s
, _scanf_s_l
, wscanf_s
. _wscanf_s_l
Not
Visual Studio 2015'te printf
ve scanf
işlev ailesi olarak inline
bildirildi ve ve <conio.h>
üst bilgilerine <stdio.h>
taşındı. Eski kodu geçiriyorsanız bu işlevlerle bağlantılı olarak Bağlayıcı Hatası LNK2019 görebilirsiniz. Daha fazla bilgi için bkz . Visual C++ değişiklik geçmişi 2003 - 2015.
Sözdizimi
int scanf(
const char *format [,
argument]...
);
int _scanf_l(
const char *format,
_locale_t locale [,
argument]...
);
int wscanf(
const wchar_t *format [,
argument]...
);
int _wscanf_l(
const wchar_t *format,
_locale_t locale [,
argument]...
);
Parametreler
format
Denetim dizesini biçimlendir.
argument
İsteğe bağlı bağımsız değişkenler.
locale
Kullanılacak yerel ayar.
Dönüş değeri
Başarıyla dönüştürülen ve atanan alanların sayısını döndürür; dönüş değeri okunmuş ancak atanmamış alanları içermez. 0 dönüş değeri, hiçbir alanın atanmadığını gösterir.
bir işaretçiyseformat
, parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır.NULL
Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek EOF
olarak EINVAL
ayarlanırerrno
.
Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
işlevi, scanf
standart giriş akışındaki stdin
verileri okur ve tarafından argument
verilen konuma yazar. Her argument
biri, içindeki bir tür tanımlayıcısına format
karşılık gelen bir tür değişkeninin işaretçisi olmalıdır. Kopyalama çakışan dizeler arasında gerçekleşirse, davranış tanımlanmamıştır.
Önemli
ile scanf
bir dize okurken her zaman biçim için %s
bir genişlik belirtin (örneğin, %32s
yerine %s
); aksi takdirde, yanlış biçimlendirilmiş giriş kolayca arabellek taşmasına neden olabilir. Alternatif olarak, , _scanf_s_l
, wscanf_s
_wscanf_s_l
veya fgets
kullanmayı scanf_s
göz önünde bulundurun.
wscanf
, öğesinin scanf
geniş karakterli bir sürümüdür; format
bağımsız değişkeni wscanf
geniş karakterli bir dizedir. wscanf
ve scanf
akış ANSI modunda açıldığında aynı şekilde davranır. scanf
şu anda bir UNICODE akışından girişi desteklemez.
Bu işlevlerin sonekli _l
sürümleri aynıdır, ancak geçerli iş parçacığı yerel ayarı yerine geçirilen yerel ayar parametresini kullanırlar.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tscanf |
scanf |
scanf |
wscanf |
_tscanf_l |
_scanf_l |
_scanf_l |
_wscanf_l |
Daha fazla bilgi için bkz . Belirtim alanlarını biçimlendirme: scanf
ve wscanf
işlevleri.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
scanf , _scanf_l |
<stdio.h> |
wscanf , _wscanf_l |
<stdio.h> veya <wchar.h> |
Konsol Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez. C çalışma zamanı işlevlerinin UWP uygulamalarında kullanabilmesi için önce konsolu stdin
, , stdout
ve stderr
ile ilişkilendirilmiş standart akış tanıtıcılarının yeniden yönlendirilmesi gerekir. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_scanf.c
// compile with: /W3
// This program uses the scanf and wscanf functions
// to read formatted input.
#include <stdio.h>
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996
// Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s
printf( "The number of fields input is %d\n", result );
printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996
wprintf( L"The number of fields input is %d\n", result );
wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
71 98.6 h z Byte characters
36 92.3 y n Wide characters
The number of fields input is 6
The contents are: 71 98.599998 h z Byte characters
The number of fields input is 6
The contents are: 36 92.300003 y n Wide characters
Ayrıca bkz.
Matematik ve kayan nokta desteği
Akış G/Ç
Yerel ayar
fscanf
, _fscanf_l
, fwscanf
, _fwscanf_l
printf
, _printf_l
, wprintf
, _wprintf_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, , __swprintf_l
sscanf
, _sscanf_l
, swscanf
, _swscanf_l