연재 완료/C Lang 이론

C언어 이론 11. 표준 라이브러리(기억장치 관리 함수 ~ 시간 관련 함수)

라이피 (Lypi) 2018. 6. 6. 13:36
반응형

내용 출처 : YES C (정보공학연구소 /생능출판사)

               혼자 연구하는 C/C++ (SoEn.kr /와우북스)



Ⅰ. 기억장치 관리 함수

   ① 힙(메모리의 동적 영역)에 공간을 할당하고 해제하는데 사용되는 함수.

   ② 이에 대한 내용은 동적할당에 대해 적은 부분에서 확인할 것.

   ③ 아래의 함수들은 stdilb.h나 malloc.c에 선언되어 있다.


함수명

형식

기능

calloc()

void* calloc(unsinged n, unsigned size)

size 바이트의 공간을 n개 할당하고 

시작 지점의 포인터를 반환. 

내용은 0으로 초기화

malloc()

void* malloc(unsigned size)

size 바이트의 공간을 할당하고,

시작 지점의 포인터를 반환.

free()

void* free(void* ptr)

ptr이 가리키는 메모리 공간을 해제

realloc()

void* realloc(void* ptr, unsigned size)

ptr이 가리키는 메모리 공간의 크기를 size 바이트로 변경


Ⅱ. 자료 변환 처리 함수

   ① 문자열을 변환 문자를 사용하여 편집하거나, 수치 자료로 변환하는 함수

   ② 아래의 함수들은 stdlib.h에 선언되어 있다.


함수명

형식

기능

atoi()

int atoi(cont char* str)

str의 문자열을 int형 정수로 변환

atol()

int atol(const char* str)

str의 문자열을 long형 정수로 변환

atof()

double atof(const char* str)

str의 문자열을 double형의 실수로 변환

itoa()

char* itoa(const int val, char* str, int rad)

rad진법의 val의 정수를 문자열로 변환하여

str에 저장

qsort()

void qsort(void* base, unsigned num, unsigned size, int (*func)(const void*, const void*))

 func가 가리키는 비교 함수를 이용하여

quick sort 방식으로 데이터를 정렬.

bsearch()

void* basearch(const void* key, const void* base,

unsigned num, unsigned size,

int(*func)(const void*, const void*))

func가 가리키는 비교함수로 qsort를 호출한 뒤,

num개의 데이터가 있는 테이블 base에서

key값을 찾아내 그 번지를 반환한다.


   ③ qsort()에서 함수 포인터로 호출하는 func(a,b) 함수는 a<b 이면 음수, a == b이면 0, a > b이면 양수를 리턴해야한다.


Ⅲ. 산술 함수

   ① 수학적 계산을 수행하는 함수

   ② 대부분의 산술 함수들의 인수와 반환값은 double형으로 선언되어 있다.

   ③ 아래의 함수들은 대부분 math.h에 선언되어 있으나, rand()와 srand()는 stdlib에 선언되어 있다.


함수명

형식

기능

sin(x)

double sin(double x)

sin 함수 제공

cos(x)

double cos(double x)

cos 함수 제공

tan(x)

double tan(double x)

tan 함수 제공

fmod(x)

double fmod(double x, double y)

double형 부동 소수점수를 x/y한 나머지를 반환

log(x)

double log(double x)

자연 loge x 제공

 log10(x)

double log10(double x)

상용 log10 x 제공

exp(x)

double dxp(double x)

지수함수 제공

asin(x)

double asin(double x)

arch sin 함수(sin함수의 역함수) 제공

acos(x)

double acos(double x)

arch cos 함수(cos함수의 역함수) 제공

atan(x)

double atan(double x)

arch tan 함수(tan함수의 역함수) 제공

pow(x,y)

double pow(double x, double y)

x의 y승을 제공

 sqrt(x)

double sqrt(double x)

양의 제곱근 루트(x)를 제공

 abs(x)

int abs(int x)

x의 절대값 제공

floor(x)

double floor(double x)

x값 이하의 최대 정수를 반환

ceil(x)

double ceil(double x)

x값 이상의 최소 정수를 반환

rand()

int rand()

0에서 RAND_MAX값 사이의 임의의 수를 반환

srand()

void srand(unsigned seed)

난수 발생기를 seed값으로 초기화시킨다.


   ④ rand()의 RAND_MAX는 stdlib.h에 #define RAND_MAX 0x7fff(32767)로 정의되어 있는 매크로 상수이다.

   ⑤ srand()를 사용하지 않으면 rand()로 생성되는 값이 프로그램을 재실행시켜도 항상 같다.


Ⅳ. 시간 관련 함수

   ① 시스템의 시간이나 그리니치 표준시, 날짜 등을 얻고자 할 때 사용되는 함수들.

   ② 아래의 함수들은 time.h에 선언되어 있다.


   

함수명

형식

기능 

time()

time_t time(time_t* timer)

현재시간을 조사해서 전달된 인자에 저장하고, 반환한다.

 localtime_s()

errno_t localtime_s(tm* const tmp,

time_t const* const t )

time()함수로 구한 로컬 시간을 tm구조체 tmp에 저장한다.

 gmtime_s()

errno gmtime_s(tm* const tmp, 

time_t const* const t)

time()함수로 구한 그리니치 표준시를 tm구조체 tmp에 저장한다.

ctime_s()

errno_t ctime_s(char* const Buffer, constsize_t Bytes, time_t const* const t)

time()함수로 구한 로컬 시간을 buffer에 bytes만큼 저장.

buffer 크기와 bytes의 값은 26 이상이어야 한다.

difftime()

double difftime(time_t t1, time_t t2)

시간 t1과 t2간의 시간 차이를 초로 계산해서 반환


      ③ time_t형은 time.h에 32bit에서는 long으로, 64bit에서는 __int64(==long long)으로 정의되어 있다. 

      ④ tm 구조체는 time.h에 다음과 같이 저장되어 있다.


 struct tm {

   int tm_sec;

   int tm_min;

   int tm_hour;

   int tm_mday;

   int tm_mon;

   int tm_year;

   int tm_wday;

   int tm_yday;

   int tm_isdst;

 };


반응형