主页 > IT业界  > 

C标准库-<stdlib.h>


简介

<stdlib.h> 头文件定义了四个变量类型、一些宏和各种通用工具函数。

库变量

下面是头文件 stdlib.h 中定义的变量类型:

序号变量 & 描述1size_t2wchar_t3div_t4ldiv_t 库宏

下面是头文件 stdlib.h 中定义的宏:

序号宏 & 描述1NULL2EXIT_FAILURE3EXIT_SUCCESS4RAND_MAX5MB_CUR_MAX 库函数

下面是头文件 stdlib.h 中定义的函数:

1. double atof(const char *str)

把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "3.14"; double value = atof(str); printf("The converted value is: %lf\n", value); return 0; } 2. int atoi(const char *str)

把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "12345"; int value = atoi(str); printf("The converted value is: %d\n", value); return 0; } 3. long int atol(const char *str)

把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "987654321"; long int value = atol(str); printf("The converted value is: %ld\n", value); return 0; } 4. double strtod(const char *str, char **endptr)

把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "3.14159 This is a string"; char *endptr; double value = strtod(str, &endptr); printf("The converted value is: %lf\n", value); printf("The remaining string is: %s\n", endptr); return 0; } 5. long int strtol(const char *str, char **endptr, int base)

把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "12345 This is a string"; char *endptr; long int value = strtol(str, &endptr, 10); printf("The converted value is: %ld\n", value); printf("The remaining string is: %s\n", endptr); return 0; } 6. unsigned long int strtoul(const char *str, char **endptr, int base)

把参数 str 所指向的字符串转换为一个无符号长整数(类型为 unsigned long int 型)。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "12345 This is a string"; char *endptr; unsigned long int value = strtoul(str, &endptr, 10); printf("The converted value is: %lu\n", value); printf("The remaining string is: %s\n", endptr); return 0; } 7. void *calloc(size_t nitems, size_t size)

分配所需的内存空间,并返回一个指向它的指针。

#include <stdlib.h> int main() { int *ptr; ptr = (int *)calloc(5, sizeof(int)); free(ptr); return 0; } 8. void free(void *ptr)

释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。

#include <stdlib.h> int main() { int *ptr; ptr = (int *)malloc(5 * sizeof(int)); free(ptr); return 0; } 9. void *malloc(size_t size)

分配所需的内存空间,并返回一个指向它的指针。

#include <stdlib.h> int main() { int *ptr; ptr = (int *)malloc(5 * sizeof(int)); free(ptr); return 0; } 10. void *realloc(void *ptr, size_t size)

尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。

#include <stdlib.h> int main() { int *ptr; ptr = (int *)malloc(5 * sizeof(int)); ptr = (int *)realloc(ptr, 10 * sizeof(int)); free(ptr); return 0; } 11. void abort(void)

使一个异常程序终止。

#include <stdlib.h> int main() { abort(); return 0; } 12. int atexit(void (*func)(void))

当程序正常终止时,调用指定的函数 func。

#include <stdlib.h> #include <stdio.h> void cleanup_function() { printf("Exiting program...\n"); } int main() { atexit(cleanup_function); return 0; } 13. void exit(int status)

使程序正常终止。

#include <stdlib.h> int main() { exit(0); return 0; } 14. char *getenv(const char *name)

搜索 name 所指向的环境字符串,并返回相关的值给字符串。

#include <stdlib.h> #include <stdio.h> int main() { const char *value = getenv("HOME"); printf("Home directory: %s\n", value); return 0; } 15. int system(const char *string)

由 string 指定的命令传给要被命令处理器执行的主机环境。

#include <stdlib.h> int main() { system("ls -l"); return 0; } 16. void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))

执行二分查找。

#include <stdlib.h> #include <stdio.h> int compare(const void *a, const void *b) { return (*(int *)a - *(int *)b); } int main() { int values[] = {2, 5, 8, 12, 16, 23, 38, 56, 72, 91}; int key = 23; int *result = (int *)bsearch(&key, values, 10, sizeof(int), compare); if (result != NULL) printf("Value %d found in the array.\n", *result); else printf("Value not found in the array.\n"); return 0; } 17. void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

数组排序。

#include <stdlib.h> #include <stdio.h> int compare(const void *a, const void *b) { return (*(int *)a - *(int *)b); } int main() { int values[] = {42, 10, 6, 88, 15}; int n = sizeof(values) / sizeof(values[0]); qsort(values, n, sizeof(int), compare); for (int i = 0; i < n; ++i) { printf("%d ", values[i]); } printf("\n"); return 0; } 18. int abs(int x)

返回 x 的绝对值。

#include <stdlib.h> #include <stdio.h> int main() { int x = -5; int abs_value = abs(x); printf("The absolute value of %d is: %d\n", x, abs_value); return 0; } 19. div_t div(int numer, int denom)

分子除以分母。

#include <stdlib.h> #include <stdio.h> int main() { div_t result = div(10, 3); printf("Quotient: %d, Remainder: %d\n", result.quot, result.rem); return 0; } 20. long int labs(long int x)

返回 x 的绝对值。

#include <stdlib.h> #include <stdio.h> int main() { long int x = -123456; long int abs_value = labs(x); printf("The absolute value of %ld is: %ld\n", x, abs_value); return 0; } 21. ldiv_t ldiv(long int numer, long int denom)

分子除以分母。

#include <stdlib.h> #include <stdio.h> int main() { ldiv_t result = ldiv(100, 25); printf("Quotient: %ld, Remainder: %ld\n", result.quot, result.rem); return 0; } 22. int rand(void)

返回一个范围在 0 到 RAND_MAX 之间的伪随机数。

#include <stdlib.h> #include <stdio.h> int main() { int random_value = rand(); printf("Random value: %d\n", random_value); return 0; } 23. void srand(unsigned int seed)

该函数播种由函数 rand 使用的随机数发生器。

#include <stdlib.h> #include <stdio.h> #include <time.h> int main() { srand(time(NULL)); int random_value = rand(); printf("Random value: %d\n", random_value); return 0; } 24. int mblen(const char *str, size_t n)

返回参数 str 所指向的多字节字符的长度。

#include <stdlib.h> #include <stdio.h> int main() { const char *str = "A"; int length = mblen(str, MB_CUR_MAX); printf("Character length: %d\n", length); return 0; } 25. size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)

把参数 str 所指向的多字节字符的字符串转换为参数 pwcs 所指向的数组。

#include <stdlib.h> #include <stdio.h> #include <wchar.h> int main() { const char *str = "AB"; wchar_t pwcs[10]; size_t result = mbstowcs(pwcs, str, 10); wprintf(L"Converted string: %ls\n", pwcs); printf("Number of wide characters: %zu\n", result); return 0; } 26. int mbtowc(wchar_t *pwc, const char *str, size_t n)

检查参数 str 所指向的多字节字符。

#include <stdlib.h> #include <stdio.h> #include <wchar.h> int main() { const char *str = "A"; wchar_t pwc; int result = mbtowc(&pwc, str, MB_CUR_MAX); if (result > 0) { wprintf(L"Character: %lc\n", pwc ); } else if (result == 0) { printf("Null character detected.\n"); } else { printf("Invalid multibyte character.\n"); } return 0; } 27. size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)

把数组 pwcs 中存储的编码转换为多字节字符,并把它们存储在字符串 str 中。

#include <stdlib.h> #include <stdio.h> #include <wchar.h> int main() { const wchar_t pwcs[] = {L'A', L'B', L'\0'}; char str[10]; size_t result = wcstombs(str, pwcs, 10); printf("Converted string: %s\n", str); printf("Number of bytes: %zu\n", result); return 0; } 28. int wctomb(char *str, wchar_t wchar)

检查对应于参数 wchar 所给出的多字节字符的编码。

#include <stdlib.h> #include <stdio.h> #include <wchar.h> int main() { wchar_t wchar = L'A'; char str[MB_CUR_MAX]; int result = wctomb(str, wchar); if (result > 0) { printf("Multibyte character: %s\n", str); } else { printf("Invalid wide character.\n"); } return 0; }

以上是 stdlib.h 中定义的所有函数的详细介绍和示例。该头文件提供了一系列有用的工具函数,能够帮助程序员进行内存分配、随机数生成、字符串转换等操作。熟练掌握这些函数将对编程工作大有裨益。

标签:

C标准库-<stdlib.h>由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C标准库-<stdlib.h>