[완료] strtok() 함수 원리 문의합니다.

mirday의 이미지

strtok 사용할때 항상 다음과 같은 방법으로 사용하는데.

의문점이 있어서 질문올립니다.
.
.
.
.
.
.

strtok(buf, "/");

strtok(NULL, "*");

첫번째는 buf라는 변수가 있으면 딜리미터 / 까지 자르란 의미인걸 알겠는데
두번째는 ..왜.. buf란 걸 안쓰고 ..NULL이라는 것을 사용하는지 모르겠습니다.
.
.
.
.
.

charsyam의 이미지

홈에 static char *next; 이런 변수가 있어서
처음 등록된 변수의 다음 값을 가리킵니다.

이로 인해서 처음의 buf 값이 바뀌니

조심하셔서 사용하시길 바랍니다. NULL을 넣으면 static 에 있는 값을 쓰는거고

아니면 스태틱에 들어온 스트링을 넣습니다.
=========================
CharSyam ^^ --- 고운 하루
=========================

=========================
CharSyam ^^ --- 고운 하루
=========================

오호라의 이미지

항상 side effect를 설명할때 가장 좋은 예가 되곤 하죠.

자매품

> man strtok_r()

직접 구현해보시면 원리를 아실듯합니다.

왜 굳이 static 변수를 써야만 하는가?~

positon 데이터가 유지되어야 하고, 반복적으로 호출되는 함수를 구현시 문제점?

어떻게 source string, delimiter string 두개의 파라미터로 구현할 것인가?

Hello World.

Fe.head의 이미지

c++ 에서는 strtok를 대신하는 어떤 함수가 있을까요?

ostringstream 에서 '\t', ' ', '\r', '\n'이 해주는데..

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"