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를 활용하면 된다.
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 |