sscanf, _sscanf_l, swscanf, _swscanf_l
Lesen formatierte Daten aus einer Zeichenfolge.Sicherere Versionen dieser Funktionen sind verfügbar. Weitere Informationen finden Sie unter sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
int sscanf(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_l(
const char *buffer,
const char *format,
locale_t locale [,
argument ] ...
);
int swscanf(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_l(
const wchar_t *buffer,
const wchar_t *format,
locale_t locale [,
argument ] ...
);
Parameter
buffer
Gespeicherte Datenformat
Formatsteuerzeichenfolge.Weitere Informationen finden Sie unter Formatangaben.argument
Optionale Argumentelocale
Das zu verwendende Gebietsschema
Rückgabewert
Jede dieser Funktionen gibt die Anzahl der erfolgreich konvertierten und zugewiesenen Felder zurück. Der Rückgabewert schließt keine Felder, die gelesen wurden, jedoch kein Wert zugewiesen.Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden.Der Rückgabewert ist EOF für einen Fehler oder wenn das Ende der Zeichenfolge vor der ersten Konvertierung erreicht ist.
Wenn buffer oder format ein NULL Zeiger ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen festlegen und -1 errno zu EINVALzurück.
Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die sscanf-Funktion liest Daten aus buffer an dem Speicherort, der von jedem argumentangegeben ist.Jedes argument muss ein Zeiger auf eine Variable mit einem Typ sein, der zu einem Typspezifizierer in formatentspricht.Das format-Argument steuert die Interpretation der Eingabefelder und weist das gleiche Form und Funktion wie das format-Argument für die Funktion scanf .Wenn das Kopieren zwischen Zeichenfolgen stattfindet, die sich überschneiden, ist das Verhalten nicht definiert.
Sicherheitshinweis |
---|
Wenn Sie eine Zeichenfolge mit sscanflesen, geben Sie immer eine Breite für das %s Format angezeigt (z. B. "%32s" anstelle "%s"). Andernfalls kann nicht richtig formatierte Eingabe einen Pufferüberlauf auf einfache Weise verursachen. |
swscanf ist eine Breitzeichen-Version von sscanf. swscanf sind die Argumente für Zeichenfolgen mit Breitzeichen.sscanfnicht behandeltes Mehrbyte Hexadezimalzeichen.Nicht behandelteswscanf der Zeichen“ Zonen „oder hexadezimal der Kompatibilität von Unicode voller Breite.Andernfalls verhalten sich swscanf und sscanf identisch.
Die Versionen dieser Funktionen mit dem _l Suffix sind identisch, mit der Ausnahme, dass sie verwenden den Gebietsschemaparameter, der anstelle des aktuellen Threads gebietsschemas übergeben wird.
Zuweisung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_stscanf |
sscanf |
sscanf |
swscanf |
_stscanf_l |
_sscanf_l |
_sscanf_l |
_swscanf_l |
Anforderungen
Routine |
Erforderlicher Header |
---|---|
sscanf, _sscanf_l |
<stdio.h> |
swscanf, _swscanf_l |
<stdio.h> oder <wchar.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
int main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
// Input various data from tokenstring:
// max 80 character string:
sscanf( tokenstring, "%80s", s ); // C4996
sscanf( tokenstring, "%c", &c ); // C4996
sscanf( tokenstring, "%d", &i ); // C4996
sscanf( tokenstring, "%f", &fp ); // C4996
// Note: sscanf is deprecated; consider using sscanf_s instead
// Output the data read
printf( "String = %s\n", s );
printf( "Character = %c\n", c );
printf( "Integer: = %d\n", i );
printf( "Real: = %f\n", fp );
}
.NET Framework-Entsprechung
Weitere Informationen finden Sie unter Parse-Methoden, z. B. System::::doubleAnalyse.
Siehe auch
Referenz
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l