본문 바로가기
프로그래밍 언어/C, C++의 기본적인 설명

[C언어 라이브러리] stdlib.h

by Physics 2022. 9. 10.
728x90

1. 정의된 데이터형 

 

데이터형 설명
size_t sizeof 연산자가 리턴하는 정수형
 wchar_t 와이드 문자들을 나타내는데 사용하는 정수형
div_t - div()가 리턴하는 구조체형
- 이 구초제는 int형인 둘 다 quot 맴버와 rem 맴버를 가지고 있다.
ldiv_t - div()가 리턴하는 구조체형
- 이 구초제는 long 형인 둘 다 quot 맴버와 rem 맴버를 가지고 있다.
lldiv_t - div()가 리턴하는 구조체형
- 이 구초제는 long long형인 둘 다 quot 맴버와 rem 맴버를 가지고 있다. 

 

2. 정의된 상수

데이터형 설명
NULL 0과 동일한 널 포인터
EXIT_FAILURE 프로그램의 실행 실패를 나타내기 위해, exit()에 전달인자로 사용할 수 있음
EXIT_SUCCESS 프로그램의 실행 성공를 나타내기 위해, exit()에 전달인자로 사용할 수 있음
RAND_MAX rand()가 리턴하는 최대 정수값
MB_CUR_MAX 현재 로케일과 일치하는 확장 문자 집합을 위한 멀티바이트 문자의 최대바이트수

 

3. 함수

■ double atof(const char *nptr); 

- double형 값으로 변환된 문자열 nptr의 시작부분을 리턴한다.
- 변환은 수의 일부가 아닌 첫 번째 문자에 도달하면 멈춘다. 
- 처음 화이트 스페이스는 건너뛴다. 
- 수가 발견되지 않으면 0을 리턴한다. 

■ int atoi(const char *nptr); 
   long atoi(const char *nptr)

- int(long)형 값으로 변환된 문자열 nptr의 시작 부분을 리턴한다. 
- 변환은 수의 일부가 아닌 첫 번째 문자에 도달하면 멈춘다. 
- 처음 화이트 스페이스는 건너 뛴다. 
- 수가 발견되지 않으면 0을 리턴한다. 

■ double strtod(const char * restrict nptr, char ** restrict endptr); 

- double 형 값으로 변환된 문자열 ntpr의 시작 부분을 리턴한다. 
- 변환은 수의 일부가 아닌 첫 번째 문자에 도돌하면 멈춘다. 
- 처음 화이트 스페이스는 건너뛴다.
- 수가 발견되지 않으면 0을 리턴한다. 
- 변환에 성공하면, 수 다음에 오는 첫번째 문자의 주소가 endptr가 가리키는 위치에 대입한다. 
- 변환에 실패하면,  nptr가 endptr가 가리키는 위치에 대입된다. 

■ float strtof(const char * restrict nptr, char ** restrict endptr)
   long double strtold((const char * restrict nptr, char ** restrict endptr))

- nptr가 가리키는 문자열을 float(long double)형으로 변환한다는 점을 제외하곤, strtod()와 동일하다. 

■ long strtol(const char * restrict nptr, char ** restrict endptr) 

- long형 값으로 변환된 문자열 nptr의 시작 부분을 리턴한다. 
- 변환은 수의 일부가 아닌 첫 번째 문자에 도달하면 멈춘다. 
- 처음 화이트 스페이스는 건너뛴다. 
- 수가 발견되지 않으면 0을 리턴한다. 
- 변환에 성공하면, 수 다음에 오는 첫 번째 문자의 주소가 endptr가리키는 위치에 대입된다. 
- 변환에 실패하면, nptr가 endptr에 가리키는 위치에 대입한다. 
- 문자열에 있는 수는 base에 의해 지정된 기수로 쓰여있다고 가정한다. 
- 다른 타입들의 함수들 
  a. long long strtoll(...) 
  b. unsigned long strtoul(...)
  c. unsigned long long strtoull(...)

■ int rand(void) 

- 0과 RAND_MAX 범위 안에 있는 의사난수 정수를 리턴한다. 

■ void srand(unsigned int seed)

- 난수 발생기의 종자 값 seed를 설정한다. 
- srand()가 호출되기 전에  rand()가 호출되면, seed의 값은 1이다. 

■ void *calloc(size_t name, size_t size)

- name개의 원소를 가지는 배열을 위해 메모리를 할당한다. 
- 각 원소의 크기는 size 바이트이다. 
- 할당된 메모리의 모든 비트들은 0으로 초기화된다. 
- 이 함수는 성공을 하면, 배열의 주소를 리턴한다. 
- 이 함수는 실패를 하면, NULL를 리턴한다. 

■ void free(void *ptr) 

- ptr가 가리키는 메모리의 할당을 해제한다. 
- ptr은 calloc(), malloc(), realloc() 호출에 의해 미리 리턴된 값이어야 한다. 
- 또는 ptr가 널 포인터일 수 있지만, 이 경우에는 아무런 일도 일어나지 않는다. 
- 다른 포인터 값에 대해서는 행동이 정의되지 않는다. 

■ void *malloc(size_t size)

- 초기화되지 않은 size 바이트의 메모리 블록을 할당한다. 
- 이 함수는 성공을 하면, 배열의 주소를 리턴한다. 
- 그렇지 않으면 NULL을 리턴한다. 

■ void *realloc(void *ptr, size_t size)

- ptr가 가리키는 메모리 블록의 크기를 size 바이트로 변경한다. 
- 이전 크기와 새 크기를 배교했을 때, 작은 것까지의 블록 내용은 변경하지 않는다. 
- 이 함수는 블록의 위치를 리턴한다. 
- 메모레 재 할당에 실패하면 NULL을 리턴하고 원래 블록은 그대로 둔다. 
- ptr가 NULL이면 SIZE 전달인자를 가지고 MALLOC()을 호출하는 것과 같다. 
- size가 0이고 ptr가 null이 아니면, ptr 전달인자를 가지고 free()를 호출하는 것과 같다

■ void abort(void)

- SIGABRT 신호가 잡히지 않고 해당 신호 처리기가 리턴하지 않는다면, 비정상적인 프로그램 종료를 일으킨다. 

■ int atexite( void (*func)(void))

- 프로그램이 정상적으로 종료되었을 때, 호출하기 위해, func가 가리키는 함수를 등록한다. 
- 컴파일러는 최소한 32개의 함수를 등록할 수 있도록 지원을 해야한다. 
- 등록된 함수들은 등록 순서와 반대순서로 호출된다. 
- 이 함수는 등록에 성공하면 0을 리턴한다. 그렇지 않으면 0이 아닌 값을 리턴한다. 

■ void exit(int status)

- 프로그램이 정상적인 종료되었을 때, 먼저 atexit()에 의해 등록된 함수들을 호출하고, 열려있는 모든 출력 스트림 버퍼를 비우고, 모든 입출력 스트림을 닫고, tmpfile()에 의해 만들어진 모든 파일들을 닫고, 호스트 환경으로 제어를 넘긴다. 
- status가 0이거나 EXIT_SUCCESS이면, 컴파일러가 정의한 성공적인 종료를 나타내는 값을 호스트 환경에 리턴함 
- status가 EXIT_FAILURE를 리턴하면, 컴파일러가 정의한 성공하지 못한 종료를 나타내는 값을 호스트 환경에 리턴함. 

■ char *getenv(const char *name) 

- name이 가리키는 환경 변수의 값을 나타내는 문자열을 가리키는 포인터를 리턴한다. 
- 지정된 name을 찾을 수 없다면 NULL을 리턴한다. 

■ int system(const char *str) 

- str이 가리키는 문자열을 DOS나 UNIX와 같은 명령 프로세서에 의해 실행되는 호스트 환경으로 전달한다. 
- 이 함수는 str이 NULL 포인터일 때, 명령 프로세서를 사용할 수 없다면 0이 아닌 값을 리턴한다. 
- 그렇지 않으면 0을 리턴한다. 

■ int abs(int n)

- n의 절대값을 리턴한다. 
- long 버전: long labs(int n)

■ div_t div(int numer, int denom)

- numer를 denom으로 나누었을 때의 몫과 나머지를 계산하여, 몫은 div_t 구조체의 quot 맴부에 나머지는 rem 맴버에 넣는다. 
- 부정확한 나눗셈의 경우에, 몫은 가장 가까운 대수학의 지수보다 적은 크기의 정수다. 
- long 버전: ldiv_t ldiv(long numer, long denom) 

■ int mblen(const char *s, size_t n)

- s가 가리키는 멀티바이트 문자를 구성하는 바이트 수(n개까지)를 리턴한다. 
- s가 널 문자를 가리킨다면 0을 리턴한다. 
- s가 멀티바이트 문자를 가리키지 않는다면 -1을 리턴한다. 
- s가 NULL일 때, 멀티 바이트 문자들이 상태 의존적인 인코딩을 가진다면 0이 아닌 값을 리턴한다. 그렇지 않으면 0을 리턴한다. 

 

728x90

댓글