赞
踩
<stdlib.h>
头文件定义了四个变量类型、一些宏和各种通用工具函数。
下面是头文件 stdlib.h
中定义的变量类型:
序号 | 变量 & 描述 |
---|---|
1 | size_t |
2 | wchar_t |
3 | div_t |
4 | ldiv_t |
下面是头文件 stdlib.h
中定义的宏:
序号 | 宏 & 描述 |
---|---|
1 | NULL |
2 | EXIT_FAILURE |
3 | EXIT_SUCCESS |
4 | RAND_MAX |
5 | MB_CUR_MAX |
下面是头文件 stdlib.h
中定义的函数:
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
void free(void *ptr)
释放之前调用 calloc
、malloc
或 realloc
所分配的内存空间。
#include <stdlib.h>
int main() {
int *ptr;
ptr = (int *)malloc(5 * sizeof(int));
free(ptr);
return 0;
}
void *malloc(size_t size)
分配所需的内存空间,并返回一个指向它的指针。
#include <stdlib.h>
int main() {
int *ptr;
ptr = (int *)malloc(5 * sizeof(int));
free(ptr);
return 0;
}
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;
}
void abort(void)
使一个异常程序终止。
#include <stdlib.h>
int main() {
abort();
return 0;
}
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;
}
void exit(int status)
使程序正常终止。
#include <stdlib.h>
int main() {
exit(0);
return 0;
}
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;
}
int system(const char *string)
由 string
指定的命令传给要被命令处理器执行的主机环境。
#include <stdlib.h>
int main() {
system("ls -l");
return 0;
}
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; }
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; }
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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; }
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;
}
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
中定义的所有函数的详细介绍和示例。该头文件提供了一系列有用的工具函数,能够帮助程序员进行内存分配、随机数生成、字符串转换等操作。熟练掌握这些函数将对编程工作大有裨益。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。