_snscanf, _snscanf_l, _snwscanf, _snwscanf_l

Liest formatierte Daten einer angegebenen Länge aus einer Zeichenfolge. Sicherere Versionen dieser Funktionen sind verfügbar; siehe _snscanf_s, , _snscanf_s_l, . _snwscanf_s_l_snwscanf_s

Syntax

int __cdecl _snscanf(
   const char * input,
   size_t length,
   const char * format,
   ...
);
int __cdecl _snscanf_l(
   const char * input,
   size_t length,
   const char * format,
   _locale_t locale,
   ...
);
int __cdecl _snwscanf(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   ...
);
int __cdecl _snwscanf_l(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   _locale_t locale,
   ...
);

Parameter

input
Zu untersuchende Eingabezeichenfolge

length
Anzahl der zu untersuchenden Zeichen in input

format
Mindestens ein Formatbezeichner

...
Optionale Variablen, die zum Speichern der aus der Eingabezeichenfolge extrahierten Werte durch die Formatbezeichner in format.

locale
Das zu verwendende Gebietsschema.

Rückgabewert

Beide Funktionen geben die Anzahl der erfolgreich konvertierten und zugewiesenen Felder zurück; Der Rückgabewert enthält keine Felder, die gelesen, aber nicht zugewiesen wurden. Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden. Der Rückgabewert bei einem Fehler oder beim Erreichen des Endes der Zeichenfolge vor der ersten Konvertierung lautet EOF. Weitere Informationen finden Sie unter sscanf.

Wenn input oder ein NULL Zeiger ist oder lengthformat kleiner oder gleich Null ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EOF zurück und stellen errno auf EINVAL ein.

Informationen zu diesen und anderen Fehlercodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Hinweise

Diese Funktion ist ähnlich sscanf, mit der Ausnahme, dass Sie eine feste Anzahl von Zeichen angeben können, die aus der Eingabezeichenfolge untersucht werden sollen. Weitere Informationen finden Sie unter sscanf.

Die Versionen dieser Funktionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch den ihnen übergebenen Gebietsschemaparameter anstelle des aktuellen Threadgebietsschemas.

Generische Textroutinzuordnungen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_sntscanf _snscanf _snscanf _snwscanf
_sntscanf_l _snscanf_l _snscanf_l _snwscanf_l

Anforderungen

Routine Erforderlicher Header
_snscanf, _snscanf_l <stdio.h>
_snwscanf, _snwscanf_l <stdio.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_snscanf.c
// compile with: /W3

#include <stdio.h>
int main( )
{
   char  str1[] = "15 12 14...";
   wchar_t  str2[] = L"15 12 14...";
   char  s1[3];
   wchar_t  s2[3];
   int   i;
   float fp;

   i = _snscanf( str1, 6,  "%s %f", s1, &fp); // C4996
   // Note: _snscanf is deprecated; consider using _snscanf_s instead
   printf("_snscanf converted %d fields: ", i);
   printf("%s and %f\n", s1, fp);

   i = _snwscanf( str2, 6,  L"%s %f", s2, &fp); // C4996
   // Note: _snwscanf is deprecated; consider using _snwscanf_s instead
   wprintf(L"_snwscanf converted %d fields: ", i);
   wprintf(L"%s and %f\n", s2, fp);
}
_snscanf converted 2 fields: 15 and 12.000000
_snwscanf converted 2 fields: 15 and 12.000000

Siehe auch

scanf-Breitenangabe