프로그래밍/C언어.
[C언어] 문자열 자르기(strtok). 간단 예제 및 설명.
K_Coder
2011. 9. 30. 17:00
반응형
문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다.
예를 들어 123,234,578,422 같은 문자열에서
, 기준으로 123 234 578 422 로 추출할 수 있다.
원형
char *strtok(char *s1, char *s2);
사용법.
strtok(대상문자열, 기준문자);
기준 문자열을 토큰이라고 함.
아래 소스는 메인에서 입력받은 문자열에서 : 을 기준으로 문자열을 나누는 코드.
tmp = strtok(argv[1], ":");
동작과정은, 우선 문자열에서 지정한 문자( : )를 찾고 그 위치를 null로 변경하다.
a | a | a | : | b | b | b | N |
a | a | a | N | b | b | b | N |
그리고 문자열의 첫 주소를 반환한다.
a | a | a | N | b | b | b | N |
주소를 반환 받은 값이 null이 아니면 반복을 계속한다. 아직 모두 나눈것이 아니기 때문.
문자열이란 첫 주소부터 null 까지이기 때문에 반환된 주소를 %s로 출력하면 aaa 까지 나오게 된다.
그 다음은 tmp = strtok(argv[1], ":"); argv[1] 가 아닌 NULL을 적어준다.
a | a | a | N | b | b | b | N |
검색해서 : 가 없으므로 첫 주소를 리턴함.
a | a | a | N | b | b | b | N |
문자열에 끝에는 NULL이 있기 때문에 당연히 bbb만 찍힘.
반응형