Legacy/C

strtok, strtok_s, strtok_r 함수 사용하기

shine_ing 2012. 11. 5. 10:09

일반 C(gcc)를 사용하여 Token을 하는 경우에는 보통 strtok를 사용합니다.


그러나 C++(g++)을 사용하게 될 때 구현하기 귀찮아서 기존의 C라이브러리 함수를 이용하게 되는데,


개인적으로 가장 자주 사용하는 것이 strtok와 atoi입니다.


그러나 비주얼 스튜디오 2005 이후에서는 strtok를 이용하면 경고를 출력합니다.


이를 무시하고 코딩을 하는 경우가 많았는데, 이를 무시하면 찾을 수도 없는 까마득한 디버깅의 세계로 빠져들 수 있으니 조심해야합니다.


strtok는 비주얼 스튜디오 6.0에서는 정상 작동하나, 그 이후 버전에서는


실행은 되지만 뒤에 쓰레기 값이 박히는 경우가 종종 발생합니다.


이를 대체하기 위해서 strtok_s를 이용하게 됩니다.


사용법은 아래 링크를 타고 가시면 됩니다.


http://harmonize84.tistory.com/112


그런데 strtok_s는 윈도우에서만 존재하는 함수입니다.


즉, 리눅스에서 같은 소스를 컴파일(g++)하면 에러가 출력됩니다. 


리눅스에서는 strtok_r을 이용하면 됩니다.


사용법은 man 페이지를 참고하시면 됩니다.