_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l

Liest formatierte Daten einer angegebenen Länge aus einer Zeichenfolge. Diese Funktionen sind Versionen von _snscanf, _snscanf_l, _snwscanfmit _snwscanf_l Sicherheitsverbesserungen, wie in Sicherheitsfeatures im CRT beschrieben.

Syntax

int __cdecl _snscanf_s(
   const char * input,
   size_t length,
   const char * format [, argument_list]
);
int __cdecl _snscanf_s_l(
   const char * input,
   size_t length,
   const char * format,
   _locale_t locale [, argument_list]
);
int __cdecl _snwscanf_s(
   const wchar_t * input,
   size_t length,
   const wchar_t * format [, argument_list]
);
int __cdecl _snwscanf_s_l(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   _locale_t locale [, argument_list]
);

Parameter

input
Zu untersuchende Eingabezeichenfolge

length
Anzahl der zu untersuchenden Zeichen in input

format
Mindestens ein Formatbezeichner

locale
Das zu verwendende Gebietsschema.

argument_list
Optionale Argumente, die gemäß der Formatzeichenfolge zugewiesen werden sollen.

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_s, , _sscanf_s_l, . _swscanf_s_lswscanf_s

Wenn input oder format ein NULL Zeiger 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_s, 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_s, , _sscanf_s_l, . _swscanf_s_lswscanf_s

Der Parameter für die Puffergröße ist mit den Typfeldzeichen c, C, s, S und [erforderlich. Weitere Informationen finden Sie unter scanf-Typenfeldzeichen.

Hinweis

Der Größenparameter ist vom Typ unsigned und nicht vom Typ size_t.

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_s _snscanf_s _snscanf_s _snwscanf_s
_sntscanf_s_l _snscanf_s_l _snscanf_s_l _snwscanf_s_l

Anforderungen

Routine Erforderlicher Header
_snscanf_s, _snscanf_s_l <stdio.h>
_snwscanf_s, _snwscanf_s_l <stdio.h> oder <wchar.h>

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

Beispiel

// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.

#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_s( str1, 6,  "%s %f", s1, 3, &fp);
    printf_s("_snscanf_s converted %d fields: ", i);
    printf_s("%s and %f\n", s1, fp);

    i = _snwscanf_s( str2, 6,  L"%s %f", s2, 3, &fp);
    wprintf_s(L"_snwscanf_s converted %d fields: ", i);
    wprintf_s(L"%s and %f\n", s2, fp);
}
_snscanf_s converted 2 fields: 15 and 12.000000
_snwscanf_s converted 2 fields: 15 and 12.000000

Siehe auch

scanf-Breitenangabe