strtok_s, wcstok_s

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Hinweis: Aufrufe von strtok_s können nicht verschachtelt werden. Es dürfen also keine Funktionen aufgerufen werden, die ihrerseits strtok_s verwenden. Andernfalls entsteht eine Endlosschleife.

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

+

+

+

Siehe auch