설명
산하님의 토큰추출하기를 조각코드 모음으로 옮겼습니다.
strsep이나 strtok 같은 토큰 추출 함수를 만들어본다. 기존의 표준함수들은 메모리를 할당하며 포인터를 반환하는데 이것이 언제 해제되는지 알 수 없다. (물론, glibc소스를 보면된다.) 소스는 보지 않았지만 대략, 사용자가 직접 해제해야 할 것 같아 보인다. 또한, 둘다 man을 보면 주의가 보인다. 그래서, 용도에 맞고 더 좋은(내가 보기에) 함수를 만들어 사용한다.
strsep의 NOTES :
The strsep() function was introduced as a replacement for strtok(), since the latter cannot
handle empty fields. However, strtok() conforms to ANSI-C and hence is more portable.
strtok의 BUGS :handle empty fields. However, strtok() conforms to ANSI-C and hence is more portable.
Never use these functions. If you do, note that:
These functions modify their first argument.
These functions cannot be used on constant strings.
The identity of the delimiting character is lost.
The strtok() function uses a static buffer while parsing, so it's not thread safe.
Use strtok_r() if this matters to you.
These functions modify their first argument.
These functions cannot be used on constant strings.
The identity of the delimiting character is lost.
The strtok() function uses a static buffer while parsing, so it's not thread safe.
Use strtok_r() if this matters to you.
사용방법
char *token(char *str, char *src, const char* sep);
- str : 토큰 분리를 위한 원본 문자열
- src : 토큰 분리후 다음 문자열을 가르키는 포인터
- sep : 토큰
- return : 더이상 토큰이 없거나 '\0'을 만나면
#include "token.h" int main() { char src[20]; char str[20]; char* next = &src[0]; strcpy(src, "ab1de12eoqd12dq"); while(next = token(str, next, "12")) { printf("%s\n", str); } return(0); }
'UNIX_LINUX_C_C++' 카테고리의 다른 글
make예제 (0) | 2011.10.16 |
---|---|
gcc 컴파일시 malloc() 함수 warning (0) | 2011.10.16 |
구조체, 배열, 포인트변수 설명 (0) | 2011.10.16 |
네크워크 정보가져오기 (0) | 2011.10.16 |
디렉토리 리스트 검색 (0) | 2011.10.16 |