strtok_r() — 스트링 토큰화(재시작 가능)

형식

#include <string.h>
char *strtok_r(char *string, const char *seps,
               char **lasts);

언어 레벨

XPG4

스레드세이프

로케일 감지

이 함수의 작동은 현재 로케일의 LC_CTYPE 범주로 영향을 받을 수 있습니다. 자세한 정보는 CCSID 및 로케일 이해의 내용을 참조하십시오.

설명

이 함수는 strtok()의 재시작 가능한 버전입니다.

strtok_r() 함수는 0개 이상의 토큰 시리즈로 string을 읽고 string에서 토큰 분리문자 역할을 하는 문자 세트로 seps를 읽습니다. string의 토큰은 seps에서 하나 이상의 분리문자로 분리할 수 있습니다. 인수 lasts는 사용자 제공 포인터를 가리키며, 이는 strtok_r() 함수가 동일한 스트링을 계속 스캔하는 데 필요한 저장된 정보를 가리킵니다.

지정된 널 종료 string에 대한 strtok_r() 함수의 첫 번째 호출에서 선행 분리문자를 건너뛰고 string에서 첫 번째 토큰을 검색합니다. 첫 번째 토큰의 첫 번째 문자에 대한 포인터를 리턴하고 널 문자를 리턴된 토큰 바로 뒤의 string에 기록하고 lasts가 가리키는 포인터를 갱신합니다.

string에서 다음 토큰을 읽으려면 널 string 인수와 함께 strtok_r() 함수를 호출합니다. 이로 인해 strtok_r() 함수는 이전 토큰 스트링에서 다음 토큰을 검색합니다. 원래 string의 각 분리문자는 널 문자로 대체되며 lasts가 가리키는 포인터가 갱신됩니다. seps에서 분리문자 세트는 호출마다 달라질 수 있지만 lasts는 이전 호출에서 변경되지 않은 상태로 남아 있어야 합니다. string에 남은 토큰이 없으면 널 포인터가 리턴됩니다.

리턴값

strtok_r() 함수를 처음 호출할 때 string에서 첫 번째 토큰에 대한 포인터를 리턴합니다. 토큰 스트링이 동일한 나중 호출에서 strtok_r() 함수는 스트림에서 다음 토큰에 대한 포인터를 리턴합니다. 토큰이 더 없으면 NULL 포인터가 리턴됩니다. 모든 토큰은 널로 종료됩니다.