임베디드

[C언어] 문자열 파싱 1 : strlen strcpy strncpy strcat strcmp atoi

히똔 2022. 4. 10. 15:50
728x90
반응형

C언어 / 문자열 파싱 / strlen strcpy strncpy strcat strcmp atoi / 임베디드 개발 / 임베디드 문자열 파싱 / 임베디드 파싱

임베디드 업계에서 문자열 파싱을 통해 시각화를 구현해야한다.
그러기 위해선 로그데이터를 제대로 분석해야한다.

문자열로 이루어진 로그데이터를 가공하고 차트화하기 위해 문자열 함수를 배울 필요가 있다.
임베디드에선 파싱을 위해 주로 string.h 헤더파일 내에 있는 함수를 이용한다.

#include <string.h>

 

strlen

문자열의 길이 구하는 함수

char str[10]="hello";

int len=strlen(str);
printf("%d",len); // 5 출력됨

 

strcpy

문자열 복사

char str[10]="hello";
char temp[10];

strcpy(temp,str); //str이 temp에 복사됨
printf("%s",temp); //hello 출력

 

strncpy

일정 길이만큼 문자열 복사

char str[10]="hello";
char temp[10];

strncpy(temp,str,4);
temp[4]='\0';
printf("%s",temp); // hell 출력됨

strncpy를 이용시 복사할 단어를 중간에 잘라서 복사할때 주의해야한다.
잘라서 복사를 하게되면 마지막 '\0' 복사가 되지 않기 때문에 단어의 끝맺음을 알 수 없다.
쓰레기 값이 붙어서 나오는 것을 방지하기 위해서 따로 '\0'를 추가해 주어야한다.

 

strcat

문자열 붙히기

char str[10]="hello";

strcat(str," hi");
printf("%s",str);

 

strcmp

문자열 비교

char str[10]="hello";

printf("%d ",strcmp(str,"apple")); // 1 출력
printf("%d ",strcmp(str,"hello")); // 0 출력
printf("%d",strcmp(str,"zebra")); // -1 출력

문자열 사전순 기준에 따라 -1, 0, 1로 출력된다.
동일한 문자열일때는 0이 출력된다.

 

atoi

숫자인 문자열을 정수형으로 바꾸기 

int a = atoi("12");
int b = atoi("34");
printf("%d ",a); // 12 출력
printf("%d",a+b); // 46 출력

 

 

 

 

[비트연산] 특정 위치 비트 set / clear / 반전

비트연산은 임베디드 개발시 기본중에 기본 지식이다. 포트의 특정 핀에 전선으로 연결된 장치를 on/off 하기 위해서는 특정 위치 비트를 0>1 / 1>0 로 바꿀 수 있어야한다. 예를 들어, 모터가 MCU의 6

asdfmelody.tistory.com

 

728x90
반응형