문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다.
예를 들어 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만 찍힘.
'프로그래밍 > C언어.' 카테고리의 다른 글
첫 테스트 글 (0) | 2012.02.07 |
---|---|
[C언어] 빙고게임 만들기. 소스 및 설명. (9) | 2011.10.18 |
[C언어] 간단하지만 순간 착각 하는 코드. [warning C4172] (1) | 2011.09.28 |
[C언어] scanf의 기본과 문자 입력 안될 때 해결 방법. (5) | 2011.09.21 |
[C언어] getchar(), getche(), getc() 차이. 간단예제. (0) | 2011.07.10 |