728x90
반응형
전 포스팅에 이어 문자열 파싱에 대해 이야기해보겠다.
sscanf
문자열을 내가 원하는 형식으로 쪼개어 저장한다.
예시
char vect[30]="[Blog] IT 2022";
char title[10];
char msg[10];
int num;
sscanf(vect, "[%s]%s%d", &title, &msg, &num);
// title 에 Blog, msg에 IT, num에 2022 저장됨
sprintf
문자열을 내가 원하는 형식으로 합쳐서 저장할 수 있다.
예시
char vect[30];
char title[10] = "Blog";
char msg[10] = "IT";
int num = 2022;
sprintf(vect, "[%s] %s %d", title, msg, &num);
//vect에 [Blog] IT 2022 저장됨
strtok
주로 문자열을 자를때 사용한다.
문자열 내 특정 문자열을 찾고, 발견시 해당 문자열이 '\0'으로 변경된다. 특정 문자열 발견 전까지의 문자열이 리턴된다.
char*p=strtok(문자열, 구분자);
실제로 strtok을 이용해서 문자열을 파싱해보는 코드는 다음과 같다.
char vect[30]="My.name.is.Heesun";
char *p = strtok(vect,".");
while(p != NULL){
printf("%s ",p);
p = strtok(NULL,".");
}
// 출력 : My name is Heesun
strtok 의 첫번째 인자로 NULL이 들어가면, 다음 문자부터 탐색해서 구분자 전까지의 문자열을 다시 리턴한다.
strchr
문자 검색하는 함수로, 발견시 찾은 문자열의 위치 주소를 리턴한다.
strchr(문자열, 찾고자하는문자);
예시
char vect[30]="ABCDEF";
printf("%s", strchr(vect, 'B'));
//BCDEF 출력
strstr
문자열 검색, 발견 시 찾은 문자열의 위치 주소를 리턴한다.
strstr(문자열, 찾고자하는문자열);
예시
char vect[30]="ABCDEF";
printf("%s", strstr(vect, "BCD"));
//BCDEF 출력됨
strtol
10진법으로 변환해주는 함수
strtol(문자열, 마지막포인터, 진법);
예시
char vect16[30]="0x38A5";
int number16 = strtol(vect16, NULL, 16);
char vect2[30]="1001011";
int number2 = strtol(vect2, NULL, 16);
10진수에서 다른 진수로 변환하는 것은 sprintf를 활용하면 된다.
[C언어] 문자열 파싱 1 : strlen strcpy strncpy strcat strcmp atoi
임베디드 업계에서 문자열 파싱을 통해 시각화를 구현해야한다. 그러기 위해선 로그데이터를 제대로 분석해야한다. 문자열로 이루어진 로그데이터를 가공하고 차트화하기 위해 문자열 함수를
asdfmelody.tistory.com
728x90
반응형
'임베디드' 카테고리의 다른 글
[시스템] 폰노이만 구조와 캐시메모리 (0) | 2022.04.16 |
---|---|
[C언어] Byte / Bit 단위 데이터 파싱 (0) | 2022.04.12 |
[C언어] 문자열 파싱 1 : strlen strcpy strncpy strcat strcmp atoi (0) | 2022.04.10 |
[비트연산] 특정 위치 비트 set / clear / 반전 (0) | 2022.04.09 |
[C언어] 자료형 : float, double, 부동소수점, 고정길이정수 (0) | 2022.04.08 |