c语言标准库详解(九):实用函数<stdlib.h>
头文件<stdlib.h>中声明了一些执行数值转换、内存分配以及其他类似工作的函数。
概述
atof
double atof(const char *s)
atof 函数将字符串 s 转换为 double 类型。该函数等价于 strtod ( s, (char**)NULL)。
atoi
int atoi(const char *s)
atoi 函数将字符串 s 转换为 int 类型。该函数等价于(int)strtol(s, (char**)NULL, 10)。
atol
long atol(const char *s)
atol 函数将字符串 s 转换为 long 类型。该函数等价于 strtol(s, (char**)NULL, 10)。
strtod
double strtod(const char *s, char **endp)
strtod 函数将字符串 s 的前缀转换为 double 类型,并在转换时跳过 s 的前导空白符。除了endp为NULL,否则该函数将把指向s中未转换部分(s的后缀部分)的指针保存在*endp中。如果结果上溢,则函数返回带有适当符号 HUGE_VAL;如果结果下溢,则返回 0。在这两种情况下,errno 都将被设置为 ERANGE。
strtol
long strtol(const char *s, char **endp, int base)
strtol 函数将字符串 s 的前缀转换为 long 类型,并在转换时跳过 s 的前导空白符。除非 endp 为 NULL,否则该函数将把指向 s 中末转换部分(s 的后辍部分)的指针保存在*endp 中。如果 base 的取值在 2~36 之间,则假定输入是以该数为基底的;如果 base 的取值为 0,则基底为八进制、十进制或十六进制。以 0 为前缀的是八进制,以 0x 或 0X 为前缀的是十六进制。无论在哪种情况下,字母均表示 10~base-1 之间的数字。如果 base 值是 16,则可以加上前导 0x 或 0X。如果结果上溢,则函数根据结果的符号返回 LONG_MAX 或 LONG_MIN,同时将 errno 的值设置为 ERANGE。
strtoul
unsigned long strtoul(const char *s, char **endp, int base)
strtoul函数的功能与strtol函数相同,但其结果为unsigned long类型,错误值为ULONG_MAX。
rand
int rand(void)
rand函数产生一个0~RAND_MAX之间的伪随机整数。RAND_MAX的取值至少为32767。
srand
void srand(unsigned int seed)
srand函数将seed作为生成新的伪随机数序列的种子数。种子数seed的初值为1。
calloc
void *calloc(size_t nobj, size_t size)
calloc函数为由 nobj 个长度为 size 的对象组成的数组分配内存,并返回指向分配区域的指针;若无法满足要求,则返回 NULL。该空间的初始长度为 0 字节。
malloc
void *malloc(size_t size)
malloc 函数为长度为 size 的对象分配内存,并返回指向分配区域的指针;若无法满足要求,则返回 NULL。该函数不对分配的内存区域进行初始化。
realloc
void *realloc(void *p, size_t size)
realloc 函数将 p 指向的对象的长度修改为 size 个字节。如果新分配的内存比原内存大,则原内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原内存小,则新分配内存单元不被初始化:realloc 函数返回指向新分配空间的指针;若无法满足要求,则返回 NULL。在这种情况下,原指针 p 指向的单元内容保持不变。
free
void free(void *p)
free 函数释放 p 指向的内存空间。当 p 的值为 NULL 时,该函数不执行任何操作。P 必须指向先前使用动态分配函数 malloe、realloc 或 calloc 分配的空间。
abort
void abort(void)
abort函数使程序非正常终止。其功能与raise(SIGABRT)类似。
exit
void exit(int status)
exit 函数使程序正常终止。atexit 函数的调用顺序与注册的顺序相反,这种情况下,所有已打开的文件缓冲区将被清洗,所有已打开的流将被关闭,控制也将返回给环境。status的值如何返回给环境要视具体的实现而定,但 0 值表示终止成功。也可使用值 EXIT_SUCCESS 和 EXIT_FAILURE 作为返回值。
atexit
int atexit(void (*fcn)(void))
atexit 函数注册函数 fcn,该函数将在程序正常终止时被调用。如果注册失败,则返回非 0 值。
system
int system(const char *s)
system 函数将字符串 s 传递给执行环境。如果 s 的值为 NULL,并且有命令处理程序,则该函数返回非 0 值。如果 s 的值不是 NULL,则返回值**与具体的实现有关。 **
getenv
char *getenv(const char *name)
getenv 函数返回与 name 有关的环境字符串。如果该字符串不存在,则返回 NULL。其细节与具体的实现有关。
bsearch
void *bsearch(const void *key,const void *base,size_t n,size_t size,int (*cmp)(const void *keyval,const void *datnum))
bsearch 函数在 base[0]…base[n-1]之间查找与*key 匹配的项。在函数 cmp 中,如果第一个参数(查找关键字)小于第二个参数(表项),它必须返回一个负值;如果第一个参数等于第二个参数,它必须返回零;如果第一个参数大于第二个参数,它必须返回一个正值。数组 base 中的项必须按升序排列。bsearch 函数返回一个指针,它指向一个匹配项,如果不存在匹配项,则返回 NULL。
qsort
void qsort(void *base,size_t n,size_t size,int (*cmp)(const void *,const void *))
qsort 函数对 base[0]…base[n-1]数组中的对象进行升序排序,数组中每个对象的长度为 size。比较函数 cmp 与 bsearch 函数中的描述相同。
abs
int abs(int n)
abs函数返回int类型参数n的绝对值。
labs
long labs(long n)
labs函数返回long类型参数n的绝对值。
div
div_t div(int num,int denom)
div函数计算num/denom的商和余数,并把结果分别保存在结构类型div_t的两个int类型的成员quot和rem中。
ldiv
ldiv_t ldiv(long num,long denom)
idiv 函数计算 num/denom 的商和余数,并把结果分别保存在结构类型 idiv_t 的两个long类型的成员quot和rem中。
示例
atof
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
float val;
char str[20];
strcpy(str, "114514.1919810");
val = atof(str);
printf("字符串值 = %s, 浮点值 = %f\n", str, val);
strcpy(str, "MAGA");
val = atof(str);
printf("字符串值 = %s, 浮点值 = %f\n", str, val);
return(0);
}
输出
PS G:\CSAPP> & 'c:\Users\swy\.vscode\extensions\ms-vscode.cpptools-0.27.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-wi4bj35e.lv2' '--stdout=Microsoft-MIEngine-Out-m2pfdpyn.juk' '--stderr=Microsoft-MIEngine-Error-fc22tpzv.qjd' '--pid=Microsoft-MIEngine-Pid-ggcipet3.olq' '--dbgExe=G:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe' '--interpreter=mi'
字符串值 = 114514.1919810, 浮点值 = 114514.195313
字符串值 = MAGA, 浮点值 = 0.000000
PS G:\CSAPP>

本文详细介绍了C语言标准库中的实用函数,包括字符串转换函数如atof, atoi, atol, strtod, strtol, strtoul,随机数生成rand和srand,内存分配函数calloc, malloc, realloc和free,以及程序控制函数如abort, exit, atexit等。此外,还涵盖了排序函数bsearch和qsort以及数学辅助函数abs和labs。"
132401787,10426244,Spring Boot实战:JdbcTemplate操作数据库详解,"['spring boot', '数据库', 'java', 'JdbcTemplate']
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



