c语言标准库详解(九):实用函数stdlib.h

本文详细介绍了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']
摘要由CSDN通过智能技术生成

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> 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值