본문 바로가기
프로그래밍/C언어.

[C언어] 문자열 자르기(strtok). 간단 예제 및 설명.

by K_Coder 2011. 9. 30.


문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다.
예를 들어 123,234,578,422 같은 문자열에서
 ,  기준으로 123   234   578  422   로 추출할 수 있다.

원형
char *strtok(char *s1, char *s2);

사용법.
strtok(대상문자열, 기준문자);

기준 문자열을 토큰이라고 함.

아래 소스는 메인에서 입력받은 문자열에서  :  을 기준으로 문자열을 나누는 코드.
 



tmp = strtok(argv[1], ":");
동작과정은, 우선 문자열에서 지정한 문자( : )를 찾고 그 위치를 null로 변경하다.
 a
                  ↑ 검색.

 a N
                  ↑ NULL 로 변경.

그리고 문자열의 첫 주소를 반환한다.
 a
↑첫 주소 변환 => tmp 에 저장.

주소를 반환 받은 값이 null이 아니면 반복을 계속한다. 아직 모두 나눈것이 아니기 때문.
문자열이란 첫 주소부터 null 까지이기 때문에 반환된 주소를 %s로 출력하면 aaa 까지 나오게 된다.

그 다음은 tmp = strtok(argv[1], ":");  argv[1] 가 아닌 NULL을 적어준다.
 a
                       ↑ 여기서부터 시작.         (수정하다 글자가 다 밀렸었는데, null 부터 시작인지, b 부터 시작인지 가물가물ㅠ)

검색해서 : 가 없으므로 첫 주소를 리턴함.
 a
                       ↑ 여기 주소를 리턴함.

문자열에 끝에는 NULL이 있기 때문에 당연히 bbb만 찍힘.