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 *));

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第9章-第2节-Java中的反射机制

1、概念&#xff1a; 反射机制&#xff1a;是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意属性和方法&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 java…

e2studio开发三轴加速度计LIS2DW12(4)----测量倾斜度

e2studio开发三轴加速度计LIS2DW12.4--测量倾斜度 概述视频教学样品申请源码下载计算倾斜角度工作原理单轴倾斜检测双轴倾斜检测三轴倾斜检测通信模式管脚定义IIC通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e…

Ubuntu共享文件到win

Ubuntu共享文件到win 1、安装samba sudo apt-get install samba samba-common2、创建一个共享文件夹&#xff0c;并设置777权限 mkdir /home/qyh/share sudo chmod 777 /home/qyh/share我的用户名&#xff1a;qyh。 3、添加用户及密码 sudo smbpasswd -a qyh4、修改配置文…

ssh远程访问及控制

目录 一、ssh协议简介 1、实现远程访问的协议和程序 2、ssh协议的概念及功能 3、ssh协议的工作原理 3.1 对称加密与非对称加密 3.1.1 对称加密&#xff08;Symmetric Encryption&#xff09; 3.1.2 非对称加密&#xff08;Asymmetric Encryption&#xff09; 3.2 公钥传…

Pandoc:markdown转word

简介&#xff1a;Pandoc是由John MacFarlane开发的标记语言转换工具&#xff0c;可实现不同标记语言间的格式转换&#xff0c;堪称该领域中的“瑞士军刀”。Pandoc使用Haskell语言编写&#xff0c;以命令行形式实现与用户的交互&#xff0c;可支持多种操作系统&#xff1b;Pand…

斯坦福CS231n学习笔记:DL与CV教程 (1) | 引言与知识基础

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

Uibot (RPA设计软件)网页表单填写————课前材料四

微信群发助手机器人的小项目友友们可以参考小北的课前材料二博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#x…

USB micro输入口中三个问题详解——差分信号、自恢复保险丝SMD1210P050TF、电容滤波

前言&#xff1a;本文对USB micro输入口中遇见的三个问题进行详解&#xff1a;差分信号、自恢复保险丝SMD1210P050TF、电容滤波 目录&#xff1a; 差分信号 自恢复保险丝SMD1210P050TF 电容滤波 如下图&#xff0c;USB为U-F-M5DD-Y-1型号&#xff08;9个引脚&#xff0c;除…

【AIGC-文本/图片生成视频系列-9】MagicVideo-V2: 多阶段高美感视频生成

最近得益于扩散模型的快速发展&#xff0c;文本到视频&#xff08;T2V&#xff09;模型的激增。 今天要介绍的是字节的MagicVideo-V2&#xff0c;一个新颖的多阶段 T2V 框架&#xff0c;它集成了文本到图像 (T2I)、图像到视频 (I2V)、视频到视频 (V2V) 和视频帧插值 (VFI) 模块…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

LabVIEW通过视频识别开发布氏硬度机自动化测量系统

LabVIEW通过视频识别开发布氏硬度机自动化测量系统 概述&#xff1a; 在当前的工业检测与自动化领域&#xff0c;对于精确测量技术的需求日益增长。特别是在材料硬度测试领域&#xff0c;布氏硬度机的自动化测量出现在越来越多的使用中。展示了一个基于LabVIEW开发的布氏硬度…

自定义C#类库(.dll文件)

环境配置 操作系统&#xff1a;Windows 10 开发工具&#xff1a;Visual Studio 2022 .Net桌面开发环境&#xff1a; 开发步骤 &#xff08;一&#xff09;创建C#类库项目 &#xff08;二&#xff09;配置项目名称和项目路径 &#xff08;三&#xff09;选择所使用的框架&a…

聊聊websocket那些事

前端必备工具推荐网站(免费图床、API和ChatAI等实用工具): http://luckycola.com.cn/ 一、什么是websocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。 它是 HTML5 中的一种新特性&#xff0c;能够实现 Web 应用程序和服务器之间的实时通信&#xff0c;…

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

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

Editplus配置Java运行环境

目录 找工具&#xff08;图1&#xff09; 编译Java&#xff1a;-d classes是在文件classes编译&#xff08;图2&#xff09; 运行Java&#xff1a;-classpath classes是在文件classes运行&#xff08;图3&#xff09; 编译和运行Java &#xff08;图4-5&#xff09; 找工具…

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

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

YOLOv5源码中的参数超详细解析(7)— yolo.py

前言:Hello大家好,我是小哥谈。YOLOv5是一种先进的目标检测算法,它可以实现快速和准确的目标检测。yolo.py是YOLOv5项目中的一个Python文件,用于实现目标检测算法。该文件包含了YOLOv5模型的定义、训练和推理过程。本节课就结合源码对yolo.py文件进行逐行解析~!🌈 前期…

C++I/O流——(4)文件输入/输出(第一节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 含泪播种的人一定能含笑收获&#xff…

8 - MySQL数据读写分离|MySQL多实例

MySQL数据读写分离&#xff5c;MySQL多实例 MySQL数据读写分离数据读写分离如何实现数据的读写分离提供数据读写分离服务的软件&#xff08;中间件&#xff09;maxscale 软件提供的读写分离服务的工作过程配置数据读写分离结构 提供数据存储服务 MySQL多实例 MySQL数据读写分离…

二分-补题

文章目录 造海船描述输入描述输出描述样例输入 1样例输出 1提示题解 寻找第一个1题目描述输入描述输出描述测试用例题解 查找数字是否出现描述输入描述输出描述样例输入 1样例输出 1题解 字典找数描述输入描述输出描述样例输入 1样例输出 1题解 寻找第一个偶数题目描述输入描述…