scanf, _scanf_l, wscanf, _wscanf_l
Okuma standart giriş akış verileri biçimlendirilmiş. Bu işlev daha güvenli sürümlerini kullanılabilir; see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.
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
Biçim denetimi dizesi.argument
İsteğe bağlı bağımsız değişkenler.locale
Kullanılacak yerel ayarı.
Dönüş Değeri
Başarılı bir şekilde dönüştürülür ve atanan alanların sayısını verir; dönüş değerini okuyabilir ancak atanmamış alanları içermez. 0 Döndürülen değeriyle hiçbir alan atanmış olan gösterir.
format Olan bir NULL işaretçisi geçersiz parametre işleyici çağrıldığında, açıklandığı gibi Parametre doğrulama. Yürütülmesine devam etmek için izin verilip verilmediğini, bu işlevler dönmek EOF ve errno için EINVAL.
Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz: _doserrno, hatano, _sys_errlist ve _sys_nerr.
Notlar
scanf İşlevi standart giriş akışından verileri okur stdin ve verileri tarafından verilen konumuna yazar argument. Her argument türü belirticisi karşılık gelen bir türünde bir değişken için bir işaretçi olmalıdır format. Kopyalama, üst üste dizeler arasında yer alıyorsa, davranışı tanımsızdır.
Güvenlik Notu |
---|
Ne zaman, bir dize okumak scanf, her zaman için bir genişlik belirleyin %s biçimini (örneğin, "%32s" yerine "%s"); Aksi takdirde, uygun olmayan şekilde biçimlendirilmiş giriş kolayca arabellek taşmasına neden olabilir.Alternatif olarak kullanmayı scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l veya fgets. |
wscanfgeniş karakter sürümü scanf; format bağımsız değişkeni wscanf bir geniş karakter dizesidir. wscanfve scanf akış ANSI modunda açılırsa aynı şekilde davranır. scanfşu anda UNICODE akış girişten desteklemiyor.
Bu işlevleri sürümlerini _l sonek dışında geçerli iş parçacığı yerel geçirilen yerel ayar parametresi kullandıkları aynı.
Genel metin eşlemeleri yordamına girildi
TCHAR.H yordamına girildi |
_UNICODE & _mbcs tanımlanmamış |
Tanımlanan _mbcs |
Tanımlanan _UNICODE |
---|---|---|---|
_tscanf |
scanf |
scanf |
wscanf |
_tscanf_l |
_scanf_l |
_scanf_l |
_wscanf_l |
Daha fazla bilgi için bkz: biçim belirtimi alanları — scanf işlevlerini ve wscanf işlevlerini.
Gereksinimler
Yordamı |
Gerekli başlık |
---|---|
scanf, _scanf_l |
<stdio.h> |
wscanf, _wscanf_l |
<stdio.h> veya <wchar.h> |
Konsol desteklenen değil Windows Mağazası apps. Konsolu ile ilgili standart akış tanıtıcıları stdin, stdout, ve stderr, c çalışma zamanı işlevlerini de kullanılmadan önce yönlendirilecek Windows Mağazası apps. Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.
Ö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);
}
.NET Framework Eşdeğeri
Ayrıca bkz: Parse yöntemleri, gibi System::Double::Parse.
Ayrıca bkz.
Başvuru
fscanf, _fscanf_l, fwscanf, _fwscanf_l
printf, _printf_l, wprintf, _wprintf_l