sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

Lesen formatierte Daten aus einer Zeichenfolge.Dies sind Versionen von sscanf, _sscanf_l, swscanf, _swscanf_l mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im CRT.

int sscanf_s(
   const char *buffer,
   const char *format [,
   argument ] ...
);
int _sscanf_s_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ...
);
int swscanf_s(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ...
);
int _swscanf_s_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ...
);

Parameter

  • buffer
    Gespeicherte Daten

  • format
    Formatsteuerzeichenfolge.Weitere Informationen finden Sie unter Formatangaben.

  • argument
    Optionale Argumente

  • locale
    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 zu errno Menge und -1 zurück EINVAL

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

Hinweise

Die sscanf_sFunktion liest Daten aus buffer an dem Speicherort, der von jedem argumentangegeben ist.Die Argumente, nachdem die Formatzeichenfolge Zeiger auf den Variablen mit einem Typ angeben, der zu einem Typspezifizierer in formatentspricht.Anders als die weniger sichere Version sscanfPuffergrößen ist ein Parameter erforderlich, wenn er im Feld Typ die cZeichen, C, s, Sund [verwendet.Die Puffergröße in Zeichen muss als zusätzlicher Parameter nach jeder Puffer angegeben werden, der sie benötigt werden.Weitere Informationen finden Sie unter scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l und scanf Typ-Feld-Zeichen.

HinweisHinweis

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

Das format-Argument steuert die Interpretation der Eingabefelder und weist das gleiche Form und Funktion wie das format-Argument für die Funktion scanf_s .Wenn das Kopieren zwischen Zeichenfolgen stattfindet, die sich überschneiden, ist das Verhalten nicht definiert.

swscanf_s ist eine Breitzeichen-Version von sscanf_s; , das die Argumente für swscanf_s Zeichenfolgen mit Breitzeichen handelt.sscanf_s nicht behandeltes Mehrbyte Hexadezimalzeichen.Nicht behandelteswscanf_s der Zeichen“ Zonen „oder hexadezimal der Kompatibilität der Unicode-normalen Breite.Andernfalls verhalten sich swscanf_s und sscanf_s 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_s

sscanf_s

sscanf_s

swscanf_s

_stscanf_s_l

_sscanf_s_l

_sscanf_s_l

_swscanf_s_l

Anforderungen

Routine

Erforderlicher Header

sscanf_s, _sscanf_s_l

<stdio.h>

swscanf_s, _swscanf_s_l

<stdio.h> oder <wchar.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

// crt_sscanf_s.c
// This program uses sscanf_s to read data items
// from a string named tokenstring, then displays them.

#include <stdio.h>
#include <stdlib.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 plus NULL terminator
   sscanf_s( tokenstring, "%s", s, _countof(s) );
   sscanf_s( tokenstring, "%c", &c, sizeof(char) );
   sscanf_s( tokenstring, "%d", &i );
   sscanf_s( tokenstring, "%f", &fp );

   // Output the data read
   printf_s( "String    = %s\n", s );
   printf_s( "Character = %c\n", c );
   printf_s( "Integer:  = %d\n", i );
   printf_s( "Real:     = %f\n", fp );
}
  

.NET Framework-Entsprechung

Weitere Informationen finden Sie unter Parse-Methoden, z. B. System::::doubleAnalyse.

Siehe auch

Referenz

Stream E/A

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snprintf, _snprintf_l, _snwprintf, _snwprintf_l