(공부) C언어

(C언어) 문자열 자르기(strtok)

율스대디 2020. 9. 20. 00:48

안녕하세요. 율스대디입니다.

오늘은 C언어에서 문자열 잘라서 사용할 수 있는 함수에 대해 설명 드리겠습니다.

해당 내용은 제가 오늘 공부해서 이해한 대로 설명하는 부분이라 조금 모자랄 수 있으니 참고 부탁드립니다.

 

C언어에서 char형 문자열을 나누는 방법 중 입력한 구분자를 이용하여 문자열을 나누는 방법은 strtok 함수를 이용하여 사용하면 된다.

 

아래는 필요 헤더파일과 함수 형식을 나타낸다.

헤더파일 : #include <String.h>

함수형식 : char *strtok(char *str, const char *delimiters);

                                      ※ str : 전체 입력 문자열

                                      ※ delimiters : 문자열을 자르기 위한 구분자

 

함수 형식에서 보듯이 strtok(전체 입력 문자열, "구분자") 입력으로 쉽게 사용가능하다.

아래 예제를 통해서 알아보도록 합시다.

 

#include <stdio.h>
#include <String.h>

char str1[] = "a,b,c,d,e,f";  //구분자 ","
char str2[] = "a b c d e f";  //구분자 " "(공백)
char str3[] = "a/b/c,d,e,f";  //구분자 "/", "," (다중 구분자)

int main() {

	printf("%s\n", str1);  //str1 원본 출력

	char *temp = strtok(str1, ","); //구분자를 기준으로 문자열 자르기

	while (temp != NULL) { //널이 아닐때까지 반복
		printf("%s\n", temp); // 출력
		temp = strtok(NULL, ",");	//널문자를 기준으로 다시 자르기
	}


	printf("\n%s\n", str2);   //결과 출력에서 구분하기 위한 한줄 띄어쓰기 및  str2 원본 출력


	temp = strtok(str2, " "); //공백을 기준으로 문자열 자르기

	while (temp != NULL) {   //널이 아닐때까지 반복
		printf("%s\n", temp); // 출력
		temp = strtok(NULL, " ");	//널문자를 기준으로 다시 자름
	}


	//복합 구분자
	printf("\n%s\n", str3);   //결과 출력에서 구분하기 위한 한줄 띄어쓰기 및 str3 원본 출력

	temp = strtok(str3, "/,"); //"/"와 ","에 대한 복합 구분자 사용

	while (temp != NULL) {    //널이 아닐때까지 반복
			printf("%s\n", temp); // 출력
			temp = strtok(NULL, "/,");	//"/" 또는 ","이 있는 경우 구분자로 인식하여 나눔
	}


		return 0;
	}

 

위의 코드를 실행하면 아래와 같은 결과를 얻을 수 있다.

 

strtok 실행 결과창

 

strtok 함수에서 구분자를 이용한 문자열 나누기는 한가지 구분자 또는 다중 구분자 모두 사용 가능하니 참고하시기 바랍니다.