본문 바로가기
반응형

언어/C언어17

[C언어] memcpy 함수 사용법 C 언어에서 메모리 복사 작업은 프로그래밍에서 매우 중요한 부분입니다. 이를 위해 사용되는 memcpy 함수는 메모리 영역을 다른 메모리 영역으로 복사하는 역할을 합니다. 이번 포스팅에서는 memcpy 함수에 대해 자세히 알아보고, 실제 활용 방법과 최적화 기술을 다루겠습니다. memcpy 함수란? memcpy는 C 표준 라이브러리에서 제공하는 함수 중 하나로, 메모리 복사를 수행합니다. 함수 프로토타입은 다음과 같습니다. void *memcpy(void *dest, const void *src, size_t n); dest: 복사할 대상 메모리 영역의 포인터 src: 복사할 소스 메모리 영역의 포인터 n: 복사할 바이트 수 memcpy 함수 사용 예제 아래는 memcpy 함수를 사용하여 문자열을 복사하.. 2023. 10. 27.
[c언어] 문자열을 Int형 정수로 변환하는 atoi함수 오늘은 리눅스에서 골치 아팠던 문자열 정수 변환 방법에 대해 알아보겠습니다 골치 아팠던 이유 중 하나는 mysql DB의 값을 select count 또는 정수형 데이터를 읽어올 때 결과값을결괏값을 atoi를 통해서 변환을 한 뒤에 사용해야 하는데 해당 결괏값을 그대로 사용하려다 보니 에러가 발생했습니다 atoi 의미 atoi 함수는 a, to, i 세 가지로 분리해서 볼 수 있습니다 a = ASCII, i = Int로 해석한다면 atoi의 뜻은 ASCII to Int입니다 즉 char 타입을 int 타입으로 변경한다는 것입니다 함수 원형 int atoi ( const char* str ); double atof( const char* str ); long int atol( const char* str .. 2022. 8. 30.
[c언어] 시간을 구하는 strftime 함수 C언어에서 기본적으로 시간을 구할 때 time.h 를 사용해서 원하는 형식의 값을 구할 수 있습니다 기존에 해당 라이브러리를 이용해서 제가 시간을 구한 방식은 다음과 같은 방법을 통해 사용했는데 기본적으로 time.h에서 제공하는 strftime 함수를 이용하면 제가 사용했던 방법보다 훨씬 간단하면서 이번에 문제가 되었던 시간이나 날짜의 형식에 0이 붙는 방식으로 출력이 가능합니다. 예를 들어 제가 이번에 문제가 되었던 이유는 시간 출력 시 오전 9시 25분을 예로 들면 9:25:0 위와 같은 결과가 출력이 되었는데 업체에서는 다음과 같은 형식을 원했습니다 09:25:00 이를 해결할 수 있는 게 strftime 함수입니다 기존 사용 방식 include unsigned char ldate[64]; uns.. 2022. 8. 5.
음수 표현 2의 보수 C언어에서 센서 같은 데이터를 처리하다 보면 마이너스 값을 만나게 됩니다 이럴 경우에 C언어에서는 어떻게 음수를 표현하는지 알아보겠습니다 음수를 표현하기 위해서는 현재 표준으로 사용되고 있는 2의 보수법을 알아야 합니다 2의 보수란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수라는 의미로 대부분의 산술연산에서 원래 숫자의 음수처럼 취급됩니다 주어진 이진수의 모든 자리의 숫자를 반전(XOR)시킨 뒤 1을 더하면 2의 보수 값입니다 0111 해당 이진수의 값은 7인데 이와 반대되는 -7은 어떻게 표현될까요 여기서 먼저 생가해야 할 것은 7과 -7을 더하면 0이라는 값이 나와야 한다는 것인데 가장 적합한 이진수는 1001입니다 0111 + 1001 왜냐하면 두 개를 합하면 10000이 되는데 4비트의 체.. 2022. 5. 25.
json-c 라이브러리 사용 방법 먼저 json-c 라이브러리를 이용해서 데이터를 만드는 방법은 json_object_new_object 함수를 이용해서 메모리를 할당받는 것으로 시작합니다 json_object *dataobj; dataobj = json_object_new_object(); json_object_object_add(dataobj,"msg",json_object_new_int(1301)); json_object_object_add(dataobj,"sn",json_object_new_string(sn)); json_object_object_add(dataobj,"si",json_object_new_string(row[0])); json_object_object_add(dataobj,"date",json_object_new_.. 2022. 5. 16.
메모리 초기화 memset 함수 배열의 형태를 사용하는 버퍼 구조에서는 c언어의 memset함수가 많이 사용됩니다. 특히 서버 프로그램을 c언어로 구성하는 경우에 정말 많이 만나게 되는데 memset함수가 어떻게 사용되는지에 대해 정리해보도록 하겠습니다. 먼저 memset 함수는 변수(배열)의 내용을 세팅하는데 메모리 자체에서 선택하는 크기만큼을 원하는 값으로 설정 할 수 있는 함수입니다. void* memset(void* ptr, int value, size_t num); 함수에 들어가는 인자는 3가지로 먼저 첫번째 인자 ptr은 세팅하고자 하는 메모리 블록의 첫번째 시작 주소입니다. 두 번째 인자인 value는 메모리에 넣어줄 값을 의미합니다. 대부분은 memset함수 자체가 0x00으로 초기화할 때 많이 사용되기 때문에 value.. 2022. 2. 7.
반응형