안녕하세요.
오늘은 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.
C# Zlib decompress, Nuget Zlib.Portable.Signed (0) | 2020.11.02 |
---|---|
C# Json String 데이터 파싱하기, Newtonsoft.Json (0) | 2020.10.29 |
C# HTTP Server, Digest HTTP Web Server, Griffin.WebServer (0) | 2020.09.17 |
C# Nuget ZMQ, ZMQ Recv (0) | 2020.09.01 |
C언어 문자열 관련 함수 strcpy, strncpy, sprintf, snprintf, strcat, strncat (4) | 2020.04.13 |