Freigeben über


scanf, _scanf_l, wscanf, _wscanf_l

Lesen formatierte Daten im Standardeingabestream.Sicherere Versionen dieser Funktion verfügbar sind; finden Sie unter 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]... );

Parameter

  • format
    Formatsteuerzeichenfolge.

  • argument
    Optionale Argumente.

  • locale
    Das Gebietsschema zu verwenden.

Rückgabewert

Gibt die Anzahl der erfolgreich konvertierten und zugewiesenen Feldern zurück; der Rückgabewert umfasst keine Felder, die gelesen wurden, jedoch nicht zugewiesen.Ein Rückgabewert 0 gibt an, dass keine Felder zugewiesen wurden.

Wenn format ein NULL Zeiger ist, ist der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, geben diese Funktionen EOF zurück und legen errno auf EINVAL fest.

Weitere Informationen über diese und andere Fehlercodes, finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die scanf-Funktion liest Daten im Standardeingabestream stdin und schreibt die Daten in den Speicherort, der für argument angegeben ist.Jedes argument muss ein Zeiger auf eine Variable eines Typs handeln, der zu einem Typspezifizierer in format entspricht.Wenn das Kopieren zwischen Zeichenfolgen stattfindet, die sich überschneiden, wird das Verhalten nicht definiert.

SicherheitshinweisSicherheitshinweis

Wenn Sie eine Zeichenfolge mit scanf lesen, sollten Sie immer eine Breite für das %s Format an (beispielsweise, "%32s" anstelle "%s"); andernfalls kann nicht ordnungsgemäß formatierte Eingabe einen Pufferüberlauf kommen.Alternativ sollten Sie mithilfe scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l oder fgets.

wscanf ist eine Breitzeichen-Version von scanf; format das Argument an wscanf ist eine Zeichenfolge mit Breitzeichen.wscanf und scanf verhalten sich identisch, wenn der Stream in ANSI-Modus geöffnet ist.scanf nicht unterstützt Eingaben von einem UNICODE-Stream.

Die Versionen dieser Funktionen mit dem _l Suffix sind identisch, allerdings verwenden den Gebietsschemaparameter in, der anstelle des aktuellen Threadgebietsschemas übergeben wird.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tscanf

scanf

scanf

wscanf

_tscanf_l

_scanf_l

_scanf_l

_wscanf_l

Weitere Informationen finden Sie unter Formatangaben-Felder - scanf Funktionen und wscanf Funktionen.

Anforderungen

Routine

Erforderlicher Header

scanf, _scanf_l

<stdio.h>

wscanf, _wscanf_l

<stdio.h> oder <wchar.h>

Die Konsole wird nicht in Windows Store-App unterstützt.Die Standardstreamhandles, die mit der Konsole, stdin, stdout und stderr zugeordnet werden, müssen umgeleitet werden, bevor sie C-Laufzeitfunktionen in Windows Store-App verwenden können.So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

Beispiel

// 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-Entsprechung

Siehe auch

Referenz

Gleitkommaunterstützung

Stream E/A

Gebietsschema

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