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 EINVALayarlanırerrno.

Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

işlevi, scanf standart giriş akışındaki stdin verileri okur ve tarafından argumentverilen konuma yazar. Her argument biri, içindeki bir tür tanımlayıcısına formatkarşı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 scanfbir 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_lveya fgetskullanmayı scanf_sgöz önünde bulundurun.

wscanf , öğesinin scanfgeniş 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, , stdoutve stderrile 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