C语言常用库函数

1.C语言标准库函数

C语言标准库函数由15个头文件组成。

1.数学函数

数学计算是计算机最擅长的运算,计算机大部分运算方法都是基于数学计算执行的。C语言提供了很多用于数学计算的库函数,合理利用这些库函数,将对程序的编写和运行起到事半功倍的作用。要使用这些函数,在程序文件头必须加入头文件包含#include<math.h>。

2.绝对值函数

数学上,绝对值称为模,主要用于表示距离和数量的大小。绝对值的定义也存在于复数、有序数等数学计算领域。一个数的绝对值永远为非负。通常,数值x主要有两类表示绝对值的函数,分别是abs()和fabs()。

3.整数的求绝对值函数abs()

函数功能:用于求一个int型数值的绝对值

函数原型:int abs(int x);

说明:函数abs()的输入参数必须为int型,函数返回值为int型,因此必须使用int型变量作为接收返回值的数据。

4.浮点型数据的求绝对值函数fabs()

函数功能:用于求一个double型数值的绝对值

函数原型:double fabs(double x);

说明:函数fabs()的输入参数必须是double型,函数返回值为double型。因此,必须使用double型变量作为接收返回值的数据。

2.平方根函数和幂函数

1.平方根函数sqrt()

函数功能:用于计算输入参数的平方根。

函数原型:double sqrt(double x);

说明:函数sqrt()的输入参数必须为double型,函数返回值为double型。因此,必须使用double型变量作为接收返回值的数据。另外,sqrt()函数的输入参数不允许为负值,若输入负值作为函数参数,将得不到正确的结果。因此,在调用函数前,应检查函数的输入参数。

2.幂函数pow()

函数功能:用于计算输入参数的次方结果

函数原型:double pow(double x,double y);

说明:函数pow()的输入参数必须为double型,函数返回值为double型。因此,必须使用double型变量作为接收返回值的数据。

3.指数函数和对数函数

指数函数和对数函数互为逆函数

1.double exp(double x)

功能:计算e的双精度实数x次幂

2.double log(double x)

功能:计算以e为底的双精度实数x的对数ln(x)

3.double log10(double x)

功能:计算以10为底的双精度实数x的对数lg(x)

使用指数函数和对数函数时,e是自然对数的底,值是无理数2.718281828

4.三角函数

三角函数常用正弦、余弦和正切函数等

  1. double sin(double x)

功能:计算双精度实数x的正弦值

  1. double cos(double x)

功能:计算双精度实数x的余弦值

  1. double tan(double x)

功能:计算双精度实数x的正切值

  1. double asin(double x)

功能:计算双精度实数x的反正弦值

  1. double acos(double x)

功能:计算双精度实数x的反余弦值

  1. double atan(double x)

功能:计算双精度实数x的反正切值

  1. double sinh(double x)

功能:计算双精度实数x的双曲正弦值

  1. double cosh(double x

功能:计算双精度实数x的双曲余弦值

  1. double tanh(double x)

功能:计算双精度实数x的双曲正切值

要正确使用三角函数,需要注意参数范围:sin()和cos()函数的参数定义域为[-1,1];asin()函数的参数x的定义域为[-1.0,1.0],值域为[-π/2,+π/2];acos()函数的参数x的定义域为[-1.0,1.0],值域为[0,π];atan()函数值域为[-π/2,+π/2]。

5.取整函数和取余函数

取整函数用于获取实数的整数部分,取余函数用于获取实数的余数部分。

  1. double ceil(double x)

功能:计算不小于双精度实数x的最小整数。

  1. double floor(double x)

功能:就算不大于双精度实数x的最大整数

  1. double fmod(double x,double y)

功能:计算双精度实数x/y的余数,余数使用x的符号

  1. double modf(double x,double*ip)

功能:把x分解为整数和小数部分,x为双精度浮点数,ip为整数部分指针,返回结果为小数部分。

6.字符串处理函数

C语言中,字符串异常频繁,经常需要对字符串进行输入、输出、合并、修改、比较、转换等操作。为了高效、统一地进行字符串处理,C语言提供了丰富的字符串处理函数,使用这些函数大大减轻编程的负担。用于字符串处理的库函数,在使用之前应包含头文件string.h。

  1. 字符串长度函数

字符串长度函数的函数原型为:

int strlen(char *d)

其主要功能是计算字符串d的长度值,终止符(’\0’)不计入

  1. 字符串连接函数
  1. char *strcat(char *d,char *s)

功能:连接字符串s到字符串d,返回字符串d

  1. char *strncat(char *d,char *s)

功能:连接字符串s中至多n个字符到字符串d,返回字符串d

注:strncat()函数把s所指字符串的前n个字符添加到d结尾处(覆盖d结尾处的’\0’),并在字符串结尾处添加’\0’,s和d所指内存区域不可以重叠,且d必须有足够的空间来容纳s的字符串,最后返回指向d的指针。

  1. 字符串复制函数

字符串复制函数用于把一个字符串复制到另一个字符串中。

  1. char *strcpy(char *d,char*s)

功能:复制字符串s到字符串d,返回字符串d

  1. char strncpy(char *d,char *s,int n)

功能:复制字符串s中至多n个字符到字符串d;如果s小于n个字符,用’\0’补上,返回字符串d

  1. void memcpy(void *d,void *s,int n)

功能:从s复制n个字符到d,返回字符串d

  1. void memmove(void *d,void*s,int n)

功能:和memcpy()相同,即使d和s部分相同也运行

注:strcpy()函数中的s和d所指内存区域不可以重叠,且d必须有足够的空间来容纳s的字符串,最后返回指向d的指针。

如果strcnpy()函数中s的前n个字节不含NULL字符,则结果不会以NULL结尾。如果s的长度小于n个字节,则以NULL填充d,直至复制完n个字节。s和d所指内存区域不可以重叠,且d必须有足够的空间来容纳s的字符串,最后返回指向d的指针。

  1. 字符串比较函数

字符串比较函数的功能是按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果,其函数原型如下:

strcmp(字符数组名1,字符数组名2)

其中,如果字符串1等于字符串2,则返回值为0;如果字符串1大于字符串2,则返回值为正数,如果字符串1小于字符串2,返回值为负数。

  1. 字符串查找函数

字符串查找函数用于在一个字符串中查找子串出现的位置。

  1. char *strchr(char *d,char *c)

功能:返回一个指向字符串d中字符c第一次出现的指针;或者如果没有找到c,则返回指向NULL的指针

  1. char *strstr(char *d,char *c)

功能:返回一个指向字符串d中字符s第一次出现的指针;或者如果没有找到s,则返回指向NULl的指针。

  1. void *memchr(void *d,char c,int n)

功能:返回一个指向d所指向的n个字符中c第一次出现的指针;或者如果没有找到c,则返回指向NULL的指针。

  1. 字符串填充函数

字符串填充函数用于快速为一个字符到一个字符串赋值

void memset(void *d;char c,int n)

功能:使用n个字符c填充void*类型变量d

7.转换和动态存储管理函数

转换函数主要用来把字符串转换为其它类型,而动态存储管理函数可以用来动态分配或者释放存储空间,这些函数的原型都包含在头文件stdlib.h里,使用这些函数时必须包含这个头文件。

  1. 转换函数

1.int atoi(string)

功能:转换一个ACSCII字符串为一个整数,在第一个非整数字符处停止。

2.double atof(string)

功能:转换一个ACSCII字符串为一个双精度数,在第一个不能被解释为一个双精度数的字符处停止

3.string itoa(int ,char*,int)

功能:转换一个整数为一个ASCII字符串。为返回的字符串分配的空间必须足够大于被转换的数值。

  1. 动态存储管理函数
  1. void *malloc(size_tn)

功能:为一个大小为n的对象分配存储空间

  1. void*calloc(size_n,size_n)

功能:为n个对象的数组分配存储空间,每个的大小为n,初始化所有被分配的内存为0

  1. void realloc(void*p,size_n)

功能:重新分配空间大小为n,内容保持与旧的相同,等于新的大小。

  1. void free(void*p)

功能:释放指向的空间

尽管在实际中,malloc()和calloc()函数能够经常互换使用,还是更推荐使用malloc()函数,因为它在这个函数中的用途更普遍。在使用malloc()函数请求分配一个新的存储空间分配时,必须给函数提供一个 所需的存储数量的指示。这可以提供请求一个指定的字节数或者通过为一个特殊数据类型请求足够的空间来完成。

被malloc()函数分配的空间来自计算机空闲存储区,这个存储区形成在堆上,堆是由未分配的存储区组成的,这个存储区能够在程序执行时根据请求分配给一个程序。程序中如果使用了free()函数,可以把使用malloc()函数分配的存储区返回给这个堆。

为了提供访问这些位置的能力,malloc()函数返回已经被保存的第一个位置。当然,这个地址必须赋值给一个指针。通过malloc()函数返回一个指针,对创建数组或一组数据的结果是很有帮助的。需要注意,返回的指针类型是void类型,这样不管请求的数据类型是什么类型,返回的地址必须使用强制类型转换成希望得到的类型,这就需要使用强制类型转换。

需要注意,程序是在使用malloc()函数分配的存储空间后,检查空间是否被正常分配,确保正常执行了分配指令。如果此时分配失败,malloc()函数将返回NULL指针,程序中断执行。所以动态分配存储空间时,一定要检查返回值,这是非常重要的。

8.字符处理函数

  1. 字符类型判断函数

字符类型判断函数用于判断字符的类型,如是整数、字母还是标点符号等。

1.int isalnum(int c)

如果整数c是文字或者数字,返回非零,否则返回零

2.int isalpha(int c)

如果整数c是一个字母,返回非零,否则返回零

3.int iscntrl(int c)

如果整数c是一个控制符,返回非零,否则返回零

4.int isdigit(int c)

如果整数c是一个数字,返回非零,否则返回零

5.int isgraph(int c)

如果整数c是可打印的(排除空格),返回非零,否则返回零

6.int islower(int c)

如果整数c是小写字母,返回非零,否则返回零

7.int isprint(int c)

如果整数c是可打印的(包括空格),返回非零,否则返回零

8.int ispunct(int c)

如果整数c是可打印的(包括空格、字母或数字之外),返回非零,否则返回零

9.int isspace(int c)

如果整数c是一个空格,返回非零,否则返回零

10.int isupper(int c)

如果整数c是大写字母,返回非零,否则返回零

11.int isxidigit(int c)

如果整数c是十六进制数字,返回非零,否则返回零

(2)字符大小写转换函数

字符大小转换函数主要用于字母大小写互换

  1. int tolower(int c)

功能:转换整数c为小写字母。当c为大写字母时,则返回对应的小写字母,否则返回原来的值。

  1. int toupper(int c)

功能:转换整数c为大写字母。当c为小写英文字母时,则返回对应的大写字母,否则返回原来的值。

9.随机函数

  1. 初识随机函数

C语言的标准函数库提供有一个随机函数,即rand()函数,它返回[0,MAX]均匀分布的伪随机整数。rand()函数不接受参数,默认以1为种子(即起始值),它总是以相同的种子开始,所以形成的伪随机数列也相同,不是真正的随机。这是有意设计的,目的是为了便于程序的调试。

另一个函数是srand(),可以使用该函数指定不同的数(无符号整数)为种子。但是如果种子相同,那么伪随机数列也相同。有两种方法可以采用:一种是让用户输入种子,但效果不是很理想;另一种比较理想的采用变化的数,常用时间来作为随机数生成的种子。这样种子不同,产生的随机数也就不同。

  1. 使用随机函数

rand()函数没有参数,它返回一个从0到最大值之间的随机数。例如要产生0~10的随机整数,可以表示为:int n=rand()%11;

要产生1~10,则是这样的:int n=1+rand()%10;

总的来说,要生成一个[a,b]范围内的一个随机整数,可以表示为:int n=a+rand()%(b-a+1)

srand()函数的参数是一个带NULL参数的time()函数。NULL参数使time()函数以秒为单位读取计算机内部时钟的时间,然后srand()函数使这个时间初始化,rand()函数设定随机函数范围,也就是常说的产生一个以当前时间开始的随机种子。

MAX为随机数范围的上限值,rand()%MAX产生的随机数范围是[0,MAX-1]。

10.日期和时间处理函数

C语言的标准库函数包括一系列日期和时间处理函数。

  1. char *asctime(const struct tm*timeptr)

功能:将参数timeptr所指的它们结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。

  1. char *ctime(const time_t*timep)

功能:将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回

  1. struct tm*gmtime(const time_t*timep)

功能:将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

  1. struct localtime(const time_t*timep)

功能:将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示,然后将结果由结构tm返回。

11.命令行参数

标准C语言允许主函数main()由或没有参数列表,所以可以在主函数中使用一个或多个参数,下面主函数的形式:

int main(int argc,char *argv[])

这是main()函数通常的写法,其中第一个函数argv是英文argument counter的简写,表示传递给主函数main()函数有多少个参数,第二个参数argv[]以字符串数组的形式接收真正的参数,它是英文argument valua的简写。

main()函数本身是索引为0的参数,所以argc至少为1.在控制台环境中,用户在程序路径和名称的后面输入参数,将传递给argv[1]、argv[2]等。

12.其他函数

1.exit()函数

exit()函数表示结束程序,它的返回值将被忽略。如果使用exit()函数,需要包含stdlib.h头文件。函数原型为:void exit(int retval)

2.qsort函数

qsort()函数包含在stdlib.h头文件里面,此函数根据给出的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort()函数必须自己写一个比较函数。

函数原型:void qsort(void *base,int n,int size,int (*fcmp)(const void *,const void *));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/320358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python相对导入和绝对导入

目录结构&#xff1a; 在 en_de_model_CDDD.py 文件有两种导入方式可以导入utils.py&#xff0c;分别是 相对导入&#xff1a; from ...public_utils.utils import canonicalize_smiles 绝对导入&#xff1a; from public_utils.utils import canonicalize_smiles 这里推荐使…

大量的视频如何批量随机分割的方法:批量剪辑不求人

在处理大量视频文件时&#xff0c;经常要进行随机分割&#xff0c;满足不同的需求。制作短视频、片段集锦等&#xff0c;批量随机分割视频都是一个高效的方法。下面来看云炫AI智剪如何操作的吧。 分割后的视频缩略图展示&#xff0c;被分割的视频自动分类保存在对应的文件夹中。…

软件测试|Pydantic BaseModel使用详解

简介 当我们在Python中编写应用程序时&#xff0c;通常需要处理和验证数据。Pydantic 是一个流行的库&#xff0c;它可以帮助我们定义数据模型并自动进行数据验证。在Pydantic中&#xff0c;BaseModel是一个核心概念&#xff0c;它用于定义数据模型和验证输入数据。在这篇文章…

第六站:C++面向对象关键字解释说明

this指针: 是一个特殊的指针,放回这个对象本身,this指针是属于实例对象,不能访问静态方法(不属于某一个实例对象,属于共有的,大众的,由类直接调用) 第一种用法: void Human::setName(string name1) {this->name name1; } void Human::setAge(int age1) {this->age a…

拯救者y9000p安装linux、windows双系统。

首先需要准备启动盘 我用的是Win32DiskImager来做的。资源使用的是ubuntu-20.04.6-desktop-amd64.iso。别用低版本&#xff0c;失败很多次之后的教训。 磁盘管理-磁盘分区-右键-压缩卷 这边分区出来之后&#xff0c;不要分配。安装时候会自动分配的。 重启之后F2进去BIOS设置…

张载为往圣继绝学,唯一的错是不够强大

“自古雄才多磨难&#xff0c;从来纨绔少伟男。” 张载&#xff0c;人称“横渠先生”。他在横渠镇&#xff0c;授徒讲学&#xff0c;恢复古礼&#xff0c;试验井田&#xff0c;写书《正蒙》。张载讲学关中&#xff0c;弟子多为关中人&#xff0c;其学派被称作关学。 张载自学…

git-生成证书、公钥、私钥、error setting certificate verify locations解决方法

解决方法 方法1-配置证书、公钥、私钥打开Git Bash设置名称和邮箱执行&#xff0c;~/.ssh执行&#xff0c;ssh-keygen -t rsa -C "这是你的邮箱"&#xff0c;如图&#xff1a;进入文件夹可以看到用记事本之类的软件打开id_rsa.pub文件&#xff0c;并且复制全部内容。…

Python自动化测试框架【生成测试报告】

如何才能让用例自动运行完之后&#xff0c;生成一张直观可看易懂的测试报告呢&#xff1f; 小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前&#xff0c;我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页&#xff0c;小…

并发编程之并发容器

目录 并发容器 CopyOnWriteArrayList 应用场景 常用方法 读多写少场景使用CopyOnWriteArrayList举例 CopyOnWriteArrayList原理 CopyOnWriteArrayList 的缺陷 扩展迭代器fail-fast与fail-safe机制 ConcurrentHashMap 应用场景 常用方法 并发场景下线程安全举例 Con…

软件测试|教你使用Python下载图片

前言 我一直觉得Windows系统默认的桌面背景不好看&#xff0c;但是自己又没有好的资源可以进行替换&#xff0c;突然我一个朋友提醒了我&#xff0c;网络上的图片这么多&#xff0c;你甚至可以每天换很多个好看的背景&#xff0c;但是如果让我手动去设置的话&#xff0c;我觉得…

编程高手必备:Python字典操作与示例全解析

编程高手必备&#xff1a;Python字典操作与示例全解析 引言Python字典基础字典操作技巧代码示例实际应用案例实际应用案例结语 引言 在编程世界中&#xff0c;高效地处理和组织数据是每位程序员必备的技能。Python&#xff0c;作为一种广受欢迎的编程语言&#xff0c;不仅因其…

mysql原理--undo日志1

1.事务回滚的需求 我们说过 事务 需要保证 原子性 &#xff0c;也就是事务中的操作要么全部完成&#xff0c;要么什么也不做。但是偏偏有时候事务执行到一半会出现一些情况&#xff0c;比如&#xff1a; (1). 事务执行过程中可能遇到各种错误&#xff0c;比如服务器本身的错误&…

Jenkins-用户管理

用户管理 1 安装插件 2 选择安全策略为刚刚安装的插件 3 这个是安装插件以后会有的选项 4 增加一个角色 5 根据需要赋值角色的权限&#xff0c;并分配给用户

橘子学Mybatis07之Mybatis关于缓存的设计

很逆天的一件事是&#xff0c;我上一次发mybatis是在2022年10月15号&#xff0c;然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了&#xff0c;而且重心都投入在了Elasticsearch的学习上面&#xff0c;基本一年下来都在搞ES&#xff0c;并且考下了ECE认证&#…

【Docker】Dockerfile构建最小镜像

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 一.Dockerfile是什么 二.Dock…

lenovo联想笔记本电脑拯救者Legion Y7000 2019 PG0(81T0)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1fn0aStc4sfAfgyOKtMiCCA?pwdas1l 提取码&#xff1a;as1l 联想拯救者原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;…

模型索引:QModelIndex

一、为什么要使用模型索引&#xff1f; 从名字可以看出&#xff0c;他是模型的索引&#xff0c;只要对模型实体&#xff08;各种xxxModel的实体&#xff09;施加这个索引&#xff0c;model就会返回数据集中对应的值&#xff0c;或者通过这个索引修改对应数据集中的值。 类比数…

VMware安装CentOS7虚拟机

VMware 安装 获取 VMware 安装包 下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ELR5NZa7rO6YVplZ1IUigw?pwdplz3 提取码&#xff1a;plz3 包括&#xff1a;当然&#xff0c;也可以自己去别的地方下载&#xff0c;WMware 版本都差不多&#xff0c;现在用的比…

数据结构学习 jz14剪绳子

关键词&#xff1a;数学 动态规划 快速幂 这道题其实是分为两题。 题目一&#xff1a; 这道题我是没有思路的&#xff0c;看了k神的答案才知道有数学的方法。 方法一&#xff1a; 数学&#xff1a;其实中间的推导我没看&#xff0c;我服了。 思路&#xff1a; 复杂度计算&…

matplotlib:热图、箱形图、小提琴图、堆叠面积图、雷达图、子图

简介&#xff1a;在数字化的世界里&#xff0c;从Web、HTTP到App&#xff0c;数据无处不在。但如何将这些复杂的数据转化为直观、易懂的信息&#xff1f;本文将介绍六种数据可视化方法&#xff0c;帮助你更好地理解和呈现数据。 热图 (Heatmap)&#xff1a;热图能有效展示用户…