== stdlib.h == 담당 : [이도현] stdlib.h - Standard library 정의 == 매크로 (Macros) == || 매크로 명 || 설명 || || NULL || 널 포인터 상수 값 || || EXIT_FAILURE || 실패한 종료 (0이 아닌 값을 가짐) || || EXIT_SUCCESS || 성공한 종료 (0인 값을 가짐) || || RAND_MAX || 랜덤 함수에 의해서 리턴되는 최대 값 (적어도 32, 767) || || MB_CUR_MAX || 현재 사용 중인 로케일에서 멀티바이트 문자의 최대 길이 || == 변수 (Variables) == || 변수 명 || 설명 || || typedef size_t || sizeof 키워드의 unsigned 정수형 결과 || || typedef wchar_t || 확장 문자 상수 크기의 정수 타입 || || struct div_t || div() 함수에 의해 리턴되는 구조체형 || || struct ldiv_t || idiv() 함수에 의해 리턴되는 구조체형 || == 함수 (Functions) - String Functions == || 함수 명 || 설명 || || double atof(const char *str); || 문자열을 실수(double precision)로 변환 || || int atoi(const char *str); || 문자열을 정수(integer)로 변환 || || double strtod(const char *str, char **endptr); || 문자열을 실수(double precision)로 변환 || || long int strtol(const char *str, char **endptr, int base); || 문자열을 정수(long integer)로 변환 || || unsigned long int strtoul(const char *str, char **endptr, int base); || 문자열을 정수(unsigned long)로 변환 || == 함수 (Functions) - Memory Functions == || 함수 명 || 설명 || || void *calloc(size_t nitems, size_t size); || 요청된 메모리 할당 (모든 원소를 0으로 초기화 한다) || || void free(void *ptr); || calloc(), malloc(), realloc()에 의해 할당된 메모리 해제 || || void *malloc(size_t size); || 요청된 메모리 할당 (원소를 초기화 하지 않는다) || || void *realloc(void *ptr, size_t size); || calloc(), malloc()에 의해 할당된 메모리 크기를 재조정한다 || == 함수 (Functions) - Environment Functions == || 함수 명 || 설명 || || void abort(void); || 비정상적인 프로그램 종료를 발생시킨다 || || int atexit(void (*func)(void)); || 프로그램이 정상적으로 종료될 때 전달인자로 넘겨진 함수포인터를 이용해서 특정 함수 실행 || || void exit(int status); || 정상적인 프로그램 종료를 발생시킨다 || || char *getenv(const char *name); || 환경 변수를 얻는다 || || int system(const char *string); || 전달인자로 받은 명령 실행 || == 함수 (Functions) - Searching and Sorting Functions == || 함수 명 || 설명 || || void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)); || 이진검색 수행 || || void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)); || 퀵 소트 수행 || == 함수 (Functions) - Math Functions == || 함수 명 || 설명 || || int abs(int x); || 정수형 절대값 리턴 || || div_t div(int numer, int denom); || 전달인자의 numer를 denom으로 나눈 값과 나머지를 구조체형식으로 리턴 || || long int labs(long int x); || long형 정수의 절대값을 리턴 || || ldiv_t ldiv(long int numer, long int denom); || div()와 동일하고 변수 타입만 long int || || int rand(void); || 0부터 RAND_MAX까지의 범위사이의 난수 리턴|| || void srand(unsigned int seed); || rand()에 의해 사용되는 난수 생성기에 인자 공급 || == 함수 (Functions) - Multibyte Functions == || 함수 명 || 설명 || || int mblen(const char *str, size_t n); || 다중 바이트 문자의 길이 리턴 || || size_t mbstowcs(schar_t *pwcs, const char *str, size_t n); || 다중 바이트 문자 스트링을 wide 문자 스트링으로 변환 || || int mbtowc(whcar_t *pwc, const char *str, size_t n); || 다중 바이트 문자를 wide 문자로 변환 || || size_t wcstombs(char *str, const wchar_t *pwcs, size_t n); || wide 문자 스트링을 다중 바이트 스트링으로 변환 || || int wctomb(char *str, wchar_t wchar); || wide 문자를 다중 바이트 문자로 변환 || == stdlib.h 의 함수 예제 == ==== strtod(), strtol(), strtoul() 예제코드 ==== {{{~cpp #include #include void main( void ) { char *string, *stopstring; double x; long l; int base; unsigned long ul; string = "3.1415926This stopped it"; x = strtod( string, &stopstring ); printf( "string = %s\n", string ); printf(" strtod = %f\n", x ); printf(" Stopped scan at: %s\n\n", stopstring ); string = "-10110134932This stopped it"; l = strtol( string, &stopstring, 10 ); printf( "string = %s", string ); printf(" strtol = %ld", l ); printf(" Stopped scan at: %s", stopstring ); string = "10110134932"; printf( "string = %s\n", string ); /* Convert string using base 2, 4, and 8: */ for( base = 2; base <= 8; base *= 2 ) { /* Convert the string: */ ul = strtoul( string, &stopstring, base ); printf( " strtol = %ld (base %d)\n", ul, base ); printf( " Stopped scan at: %s\n", stopstring ); } } }}} ==== strtod(), strtol(), strtoul() 실행 결과 ==== string = 3.1415926This stopped it strtod = 3.141593 Stopped scan at: This stopped it string = -10110134932This stopped it strtol = -2147483647 Stopped scan at: This stopped itstring = 10110134932 strtol = 45 (base 2) Stopped scan at: 34932 strtol = 4423 (base 4) Stopped scan at: 4932 strtol = 2134108 (base 8) Stopped scan at: 932 ==== malloc() 예제코드 ==== {{{~cpp #include /* For _MAX_PATH definition */ #include #include int main( void ) { char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH ); // In a C++ file, explicitly cast malloc's return. For example, // string = (char *)malloc( _MAX_PATH ); if( string == NULL ) printf( "Insufficient memory available\n" ); else { printf( "Memory space allocated for path name\n" ); free( string ); printf( "Memory freed\n" ); } } }}} ==== malloc() 실행 결과 ==== Memory space allocated for path name Memory freed ==== qsort(), bsearch() 예제코드 ==== {{{~cpp #include #include #include int main(void) { int i; char string_array[10][50]={"John", "Jane", "Mary", "Rogery", "Dave", "Paul", "Beavis", "Astro", "George", "Elroy"}; /* 정렬 전 */ for (i = 0; i < 10; i++) printf("%s, ", string_array[i]); printf("\n"); /* Sort the list */ qsort(string_array, 10, 50, strcmp); /* 정렬 후 */ for (i = 0; i < 10; i++) printf("%s, ", string_array[i]); printf("\n"); /* Search for the item "Elroy" and print it */ printf("%s\n",bsearch("Elroy", string_array, 10, 50, strcmp)); return 0; } }}} ==== qsort(), bsearch() 실행 결과 ==== John, Jane, Mary, Rogery, Dave, Paul, Beavis, Astro, George, Elroy, Astro, Beavis, Dave, Elroy, George, Jane, John, Mary, Paul, Rogery, Elroy ---- [OurMajorLangIsCAndCPlusPlus]