strtok 관련 질문입니다...
글쓴이: dragem / 작성시간: 수, 2004/12/01 - 10:06오후
a란 함수에서 strtok을 쓰다가 b란 함수를 호출하여
그 속에서 strtok을 사용하면 안되는 겁니까?
a(char *buf) { char *tok; tok = strtok(buf, " \n"); while( tok != NULL) { b(tok); tok = strtok(NULL, " \n"); } } b(char *buf) { char *tok; tok = strtok(buf, " \n"); while( tok != NULL) { printf("%s", tok); tok = strtok(NULL, " \n"); } }
다른 함수에서 사용된 strtok이 내부버퍼를 공유하여 제대로 동작하지 않는거 같습니다.. 이럴때 어떻게 해결하는 방법이 있을까요...
Forums:
어떤 의도로 작성하신 코드인지는 잘 모르겠지만...포인터를 따라가
어떤 의도로 작성하신 코드인지는 잘 모르겠지만...
포인터를 따라가보세요.
a에서 buf로 받은 것, a의 tok, a의 tok을 b의 buf로 주고, 그건 또 b의 tok으로...
문자열을 복사한다던지 하는 방식으로 동작해야겠지요.
strtok_r 이던가.. 하튼.. thread_safe 한 버젼을 쓰세
strtok_r 이던가.. 하튼.. thread_safe 한 버젼을 쓰세요..
=3=33
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
strsep(3)을 쓰셔도 됩니다. 저는 왠지 이게 더 편하더군요.
strsep(3)을 쓰셔도 됩니다. 저는 왠지 이게 더 편하더군요.
Re: strtok 관련 질문입니다...
기본적으로 strtok 는 내부적으로 static 을 이용합니다. 당연히 이렇게 부르면
쓸수가 없는게 당연합니다. 고운 하루되시길...
=========================
CharSyam ^^ --- 고운 하루
=========================
Re: strtok 관련 질문입니다...
strtok_r 은.. static 버퍼를 이용하지 않습니다 ;)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
Re: strtok 관련 질문입니다...
쿨럭, 물론 알고 있습니다. 그래서 기본적으로라고 한겁니다. 쿨럭... 흑흑흑
태영님 나빠요 T^T
=========================
CharSyam ^^ --- 고운 하루
=========================
strtok_r 소스
OS 에 따라서 없는 경우도 있습니다 참조 하시길 바랍니다.
가자 해외로 ~ .. 돈 벌러.
Re: strtok_r 소스
흐윽 저기요 저는 strtok 를 말한겁니다. strtok_r 을 말한게 아니구요 T.T
strtok_r
다른 분들이 달아주신 답변은, strtok를 그런 식으로 사용하면 내부에서 사용하는 static 변수때문에 정상적으로 작동하지 않으니, strtok_r을 사용하라고 충고해주신 겁니다.
굳이 strtok를 쓰셔야만 하는 상황이라면(제 경험으로 보면 그런 일은 거의 없지만) 버퍼를 복사해놓고, 한 버퍼에 대해서 다 처리한 후에,
다른 버퍼를 처리하셔야 할 겁니다.
어쨌든, 질문자께서 지금 사용하신 방법으로는 원하시는 일을 할 수 없을 겁니다.
댓글 달기