- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[C] strtok구현 본문
출처:francis__kim
char *my_strtok(char *str, char *delim)
{
static char *org = NULL; // 토큰분리시작점.
// 토큰계속분리요청시(NULL로 호출) 이전 정보를
// 보관하고 있어야 하므로 static으로 선언.
static char *tracer = NULL; // 분리문자를 찾아가기위한 변수
// 연속처리에 사용하기 위하여 static으로 선언
char *pdelim; // 분리문자 비교를 위한 변수
// 새로운 문자열이 들어 오면 static 변수에 등록
if (str != NULL) tracer = str;
// 분리문자가 없으면 분리할 방법이 없으므로 NULL로 반환
if (delim == NULL || *delim == NULL) return NULL;
// 분리문자를 찾기 위한 추적변수를 검사하여 더이상 처리할 문자열이 없으면 NULL로 반환
if (tracer == NULL || *tracer == '\0') return NULL;
// 토큰분리시점에서부터 분리문자가 있다면 스킵해야 겠죠?
// 여긴 앞에 붙어 있는 분리문자를 스킵하는 부분입니다.
while (*tracer) {
// 현재 문자를 분리문자열에 있는 문자들과 비교
for (pdelim = delim; *pdelim; pdelim++) {
if (*tracer == *pdelim) break;
}
// 위에 있는 반복문에서 분리문자와 일치하면 해당 분리문자를 pdelim 변수가
// 가리키고 있을거고... 일치하는문자가 없다면 문자열 끝을 나타내는 '\0'에 가있을테니... pdelim이 가리키는 문자값을 보면 분리문자인지 아닌지 알수가 있겠죠...
if (*pdelim == '\0') break;
tracer++;
}
// 여기서부터 본격적으로 분리문자까지 추적을 하게 됩니다.
// 반환해야 할 포인터 값을 추적 시작지점으로 설정하고
// 추적문자에 값이 있을때 까지(문자열 끝은 '\0'이니까) 순차적으로 검사
for (org = tracer; *tracer; tracer++) {
// 위에 설명한 바와 같이 분리문자와 일치하는지 검사합니다.
for (pdelim = delim; *pdelim; pdelim++) {
// 분리문자와 일치하면 반복문 탈출~~
if (*tracer == *pdelim) break;
}
// 분리문자와 일치한다면...
if (*pdelim) {
*tracer++ = '\0'; // 해당분리문자를 '\0'으로 설정해서 하나의 토큰으로 분리
// (문자열은 '\0'을 만나면 끝이죠???)
// 그리고 연속처리를 위해 추적개시점을 다음문자로 옮겨놓습니다... ^^
break;
}
}
return(org); // 추적개시점을 반환하면 받는쪽에서는 분리문자가 '\0'로 바뀌어 있으니 거기까지가 문자열로 인식되겠죠... ^^
}
'★─Programing > ☆─C | C++' 카테고리의 다른 글
[C] 다항식 덧셈 / C로 구현 (연결 리스트) (0) | 2007.11.27 |
---|---|
[C] scanf()함수 예제1 (0) | 2007.11.07 |
[C] 2차원 배열 생성 malloc (0) | 2007.10.30 |
[C] 포인터, 배열, 구조체 (0) | 2007.10.29 |
[C] strstr 함수 (0) | 2007.10.29 |