데브피아 애청자로써..ㅎㅎ 질문란을 보다가 좋은 예시가 올라와서 올린다.
strtok 함수는 두번째 인자에 해당하는 문자를 만나면 내부적으로 NULL 로 처리하기
때문에 위와 같은 경우에 문제가 생기죠.. 이것은 strtok 함수의 변종을 사용해야 하는
데 아래에 source를 첨부합니다. (일명 xstrtok) 참고로 이 함수는 표준함수가 아니며,
저도 같은 고민을 하다가 외국 저널에 실린 내용에서 찾은 겁니다.
이 함수는 strtok와 사용법이나 동작이 동일합니다. 단, 콤마 사이에 내용이 없으면
NULL을 리턴하는 점만이 다름니다.
이 함수를 제가 하고 있던 프로그램에 적용했더니 잘 되는 군요.. 그럼..
char* ClassName::xstrtok(char *line, char *delims)
{
static char *saveline = '\0';
char *p;
int n;
if(line != '\0') saveline = line;
if(saveline == '\0' || *saveline == '\0') return('\0');
n = strcspn(saveline, delims);
p = saveline; /* save start of parsed token*/
saveline += n; /* step past the delimiter*/
/* step past the delimiter and terminate token*/
if(*saveline != '\0') *saveline++ = '\0';
return(p); /* return the token*/
}
strtok()의 문제점인 NULL반환을 재선언(오버로딩이라긴엔 함수이름이 틀리니..)하여
문제를 푸는 것을 봐서 올려본다. 담번에 String 제어 할때 써먹야 겠다.
| |