Young & Rich

 

안녕하세요.

 

오늘은 C언어 문자열 파싱관련 함수에 대해서 포스팅하겠습니다.

 

strtok 함수 프로토타입

char *strtok(char *str, const char *delimiters);

헤더파일은 #include<string.h> 입니다.

 

char *str : char 배열의 문자열 주소값 (파싱하고 싶은 문자열)

const char *delimiters : 앞서 받은 str 을 어떤 문자로 나누고 싶은지 구분자

 

해당 함수를 사용하여 문자열 중에 특정 문자를 기준으로 문자를 나눌 수 있습니다.

 

#include <stdio.h>
#include <string.h>

void main()
{
	char str[] = "apple,banana,carrot";
	char delimeter[] = ",";
	char *result;
	char parsing[3][16];
	int i = 0;

	result = strtok(str, delimeter);

	while( result != NULL )
	{
		strcpy(parsing[i++], result);
		result = strtok(NULL, delimeter);
	}

	for ( i = 0; i < 3; i++ )
		printf("[%d]:%s\n", i, parsing[i]);
}

result = strtok(NULL, delimeter);

strtok 를 한 번 호출하면 내부적으로 직전에 파싱하고 남은 문자열을 가지고 있게됩니다.

while 문을 맨 처음에 들어갔을 때 내부적으로 banana,carrot 을 가지고 있을겁니다.

 

그래서 NULL 을 인자로 넣고 다시 delimeter 로 parsing 을 하면 banana 를 얻을 수 있습니다.

result != NULL 때 까지 반복하기 때문에 입력한 구분자로 모두 parsing 할 수 있습니다.

 

해당 프로그램을 실행하면 parsing 이라는 2차원 char 배열에 "," 를 기준으로 파싱된 문자들이 출력됨을 알 수 있습니다.

 

프로그램 실행결과

 

여기까지 간단한 strtok 에 사용 방법과 원리에 대해서 포스팅해봤습니다.

 

그럼 20000.

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band