strtok_s, wcstok_s
Nach oben zu string.h - Index
Header-Datei
string.h, _str.h
Kategorie
Routinen für Speicher- und String-Bearbeitung
Prototyp
char *strtok_s(char * _RESTRICT __s1, rsize_t * _RESTRICT __s1max, const char * _RESTRICT __s2, char ** _RESTRICT __ptr);
wchar_t *wcstok_s(wchar_t * _RESTRICT __s1, rsize_t * _RESTRICT __s1max, const wchar_t * _RESTRICT __s2, wchar_t ** _RESTRICT __ptr);
Beschreibung
Ersetzt strtok, _mbstok, wcstok und fügt Sicherheitserweiterungen hinzu.
Durchsucht einen String nach Token, die durch in einem zweiten String angegebene Begrenzungszeichen voneinander getrennt sind.
strtok_s betrachtet String __s1 als aus Folgen von Null oder mehr Token bestehend, die durch ein oder mehrere im String __s2 angegebene Begrenzungszeichen voneinander getrennt sind.
Der erste Aufruf von strtok_s gibt einen Zeiger auf des erste Zeichen des ersten Tokens in __s1 zurück und schreibt in __s1 unmittelbar hinter das gefundene Token ein Nullzeichen. Die folgenden Aufrufe mit Null für das erste Argument geben das jeweils nächste Token in __s1 zurück, bis keine weiteren Token gefunden werden.
Bei jedem Aufruf kann ein anderer Begrenzungszeichen-String __s2 angegeben werden. Mit ptr wird auf ein benutzerdefiniertes char* gezeigt, um Informationen zu speichern, die zum Fortsetzen der Suche nach anderen Token in demselben String __s1 erforderlich sind.
Bei einer Verletzung von Laufzeiteinschränkungen erhält strtok_s weder den Zeiger __s1 noch den Zeiger __s2 und speichert keine Werte an der Position, auf die ptr zeigt.
Rückgabewert
strtok_s gibt einen Zeiger auf das erste in __s1 gefundene Token zurück. Ein NULL-Zeiger wird zurückgegeben, wenn keine weiteren Token vorhanden sind oder eine Verletzung von Laufzeiteinschränkungen vorhanden ist.
Beispiel
#include <string.h> #include <stdio.h> int main(void) { unsigned int s1max = 16; char input[16] = "abc,d"; char *p; char *ptr = " "; /* strtok places a NULL terminator in front of the token, if found */ p = strtok_s(input, &s1max, ",", &ptr); if (p) printf("%s\n", p); /* A second call to strtok using NULL as the first parameter returns a pointer to the character following the token */ p = strtok_s(NULL, &s1max, ",", &ptr); if (p) printf("%s\n", p); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
strtok_s |
+ |
+ |
+ |
+ |
wcstok_s |
+ |
+ |
+ |