안녕하세요. 율스대디입니다.
오늘은 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 함수에서 구분자를 이용한 문자열 나누기는 한가지 구분자 또는 다중 구분자 모두 사용 가능하니 참고하시기 바랍니다.
'(공부) C언어' 카테고리의 다른 글
(C언어) 대소문자 상관없이 지정한 길이만큼 문자열 비교(strncasecmp) (0) | 2020.09.21 |
---|---|
(C언어) 대문자에 상관없이 문자열 비교(strcasecmp) (0) | 2020.09.21 |
(C언어) 문자열 복사(strcpy) (0) | 2020.09.21 |