標準庫標頭檔案 <stdlib.h>
來自 cppreference.com
此標頭檔案是程式支援工具庫的一部分,它主要提供程式終止、記憶體管理、字串轉換、隨機數生成等函式。此標頭檔案還提供一些演算法。
函式 | |
導致程式異常終止(不進行清理) (函式) | |
導致程式正常終止並進行清理 (函式) | |
(C11) |
導致正常程式終止,但不完全清理 (函式) |
(C99) |
導致程式正常終止而不進行清理 (函式) |
註冊一個函式,以便在呼叫 exit() 時被呼叫 (函式) | |
(C11) |
註冊一個函式,以便在呼叫 quick_exit 時被呼叫 (函式) |
指示程式執行狀態 (宏常量) |
本節不完整 原因:從 7.24 通用工具 <stdlib.h> 新增更多內容 |
[編輯] 概要
本節不完整 原因:從 B.23 通用工具 <stdlib.h> 新增更多內容 |
#define __STDC_VERSION_STDLIB_H__ 202311L // TODO: types and macros void call_once(once_flag* flag, void (*func)(void)); double atof(const char* nptr); int atoi(const char* nptr); long int atol(const char* nptr); long long int atoll(const char* nptr); int strfromd(char* restrict s, size_t n, const char* restrict format, double fp); int strfromf(char* restrict s, size_t n, const char* restrict format, float fp); int strfroml(char* restrict s, size_t n, const char* restrict format, long double fp); double strtod(const char* restrict nptr, char** restrict endptr); float strtof(const char* restrict nptr, char** restrict endptr); long double strtold(const char* restrict nptr, char** restrict endptr); long int strtol(const char* restrict nptr, char** restrict endptr, int base); long long int strtoll(const char* restrict nptr, char** restrict endptr, int base); unsigned long int strtoul(const char* restrict nptr, char** restrict endptr, int base); unsigned long long int strtoull(const char* restrict nptr, char** restrict endptr, int base); int rand(void); void srand(unsigned int seed); void* aligned_alloc(size_t alignment, size_t size); void* calloc(size_t nmemb, size_t size); void free(void* ptr); void free_sized(void* ptr, size_t size); void free_aligned_sized(void* ptr, size_t alignment, size_t size); void* malloc(size_t size); void* realloc(void* ptr, size_t size); [[noreturn]] void abort(void); int atexit(void (*func)(void)); int at_quick_exit(void (*func)(void)); [[noreturn]] void exit(int status); [[noreturn]] void _Exit(int status); char* getenv(const char* name); [[noreturn]] void quick_exit(int status); int system(const char* string); QVoid* bsearch(const void* key, QVoid* base, size_t nmemb, size_t size, int (*compar)(const void* , const void* )); void qsort(void* base, size_t nmemb, size_t size, int (*compar)(const void* , const void* )); int abs(int j); long int labs(long int j); long long int llabs(long long int j); div_t div(int numer, int denom); ldiv_t ldiv(long int numer, long int denom); lldiv_t lldiv(long long int numer, long long int denom); int mblen(const char* s, size_t n); int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); int wctomb(char* s, wchar_t wc); size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); size_t memalignment(const void* p);
僅當實現定義 __STDC_IEC_60559_DFP__ 時
int strfromd32(char* restrict s, size_t n, const char* restrict format, _Decimal32 fp); int strfromd64(char* restrict s, size_t n, const char* restrict format, _Decimal64 fp); int strfromd128(char* restrict s, size_t n, const char* restrict format, _Decimal128 fp); _Decimal32 strtod32(const char* restrict nptr, char** restrict endptr); _Decimal64 strtod64(const char* restrict nptr, char** restrict endptr); _Decimal128 strtod128(const char* restrict nptr, char** restrict endptr);
僅當實現定義 __STDC_IEC_60559_TYPES__ 且使用者程式碼在任何 <stdlib.h>
包含之前定義 __STDC_WANT_IEC_60559_TYPES_EXT__ 時
#ifdef __STDC_WANT_IEC_60559_TYPES_EXT__ int strfromfN(char* restrict s, size_t n, const char* restrict format, _FloatN fp); int strfromfNx(char* restrict s, size_t n, const char* restrict format, _FloatNx fp); int strfromdN(char* restrict s, size_t n, const char* restrict format, _DecimalN fp); int strfromdNx(char* restrict s, size_t n, const char* restrict format, _DecimalNx fp); _FloatN strtofN(const char* restrict nptr, char** restrict endptr); _FloatNx strtofNx(const char* restrict nptr, char** restrict endptr); _DecimalN strtodN(const char* restrict nptr, char** restrict endptr); _DecimalNx strtodNx(const char* restrict nptr, char** restrict endptr); int strfromencfN(char* restrict s, size_t n, const char* restrict format, const unsigned char encptr[restrict static N/8]); int strfromencdecdN(char* restrict s, size_t n, const char* restrict format, const unsigned char encptr[restrict static N/8]); int strfromencbindN(char* restrict s, size_t n, const char* restrict format, const unsigned char encptr[restrict static N/8]); void strtoencfN(unsigned char encptr[restrict static N/8], const char* restrict nptr, char** restrict endptr); void strtoencdecdN(unsigned char encptr[restrict static N/8], const char* restrict nptr, char** restrict endptr); void strtoencbindN(unsigned char encptr[restrict static N/8], const char* restrict nptr, char** restrict endptr); #endif
僅當實現定義 __STDC_LIB_EXT1__ 且使用者程式碼在任何 stdio.h
包含之前定義 __STDC_WANT_LIB_EXT1__ 時
#if defined(__STDC_WANT_LIB_EXT1__) constraint_handler_t set_constraint_handler_s(constraint_handler_t handler); void abort_handler_s(const char* restrict msg, void* restrict ptr, errno_t error); void ignore_handler_s(const char* restrict msg, void* restrict ptr, errno_t error); errno_t getenv_s(size_t* restrict len, char* restrict value, rsize_t maxsize, const char* restrict name); QVoid* bsearch_s(const void* key, QVoid* base, rsize_t nmemb, rsize_t size, int (*compar)(const void* k, const void* y, void* context), void* context); errno_t qsort_s(void* base, rsize_t nmemb, rsize_t size, int (*compar)(const void* x, const void* y, void* context), void* context); errno_t wctomb_s(int* restrict status, char* restrict s, rsize_t smax, wchar_t wc); errno_t mbstowcs_s(size_t* restrict retval, wchar_t* restrict dst, rsize_t dstmax, const char* restrict src, rsize_t len); errno_t wcstombs_s(size_t* restrict retval, char* restrict dst, rsize_t dstmax, const wchar_t* restrict src, rsize_t len); #endif