_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
, _snwscanf
mit _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_l
swscanf_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_errlist
und _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_l
swscanf_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.
Mapping generischer Textroutinen
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