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,一经查实,立即删除!

相关文章

Socket通讯使用的坑-消息合并发送-解决方法

关联文章 Socket通讯使用的坑-消息合并发送-CSDN博客 解决方法 /// <summary> /// 公共方法 /// </summary> public static class CommonMethods {/// <summary>/// 多个JSON对象字符串转成JSON字符串列表/// </summary>/// <param name"j…

点云深度图像创建(DepthImage)

目录 一、相关介绍 二、生成深度图像方法 三、实现代码 四、运行结果

初始化网络的权重和偏置的方法有哪些?

在神经网络中&#xff0c;权重和偏置的初始化对模型的训练和最终性能有重要影响。一个好的初始化方法可以帮助加速梯度下降的收敛速度&#xff0c;减少训练时间&#xff0c;甚至有助于避免训练过程中的问题&#xff0c;比如梯度消失或梯度爆炸。下面是一些常用的权重和偏置初始…

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

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

Python:pickle 模块详解

pickle 模块是 Python 中用于序列化和反序列化对象的标准模块。它可以将对象转换为字节流&#xff0c;以便将其保存到文件或通过网络传输&#xff0c;然后再将字节流还原为原始对象。以下是 pickle 模块的常用函数、示例以及一些注意事项&#xff1a; pickle.dump() 函数&…

ModuleNotFoundError: No module named ‘wtforms.ext‘

flask运行报错&#xff1a; ModuleNotFoundError: No module named wtforms.ext 解决办法&#xff1a; python -m pip install WTForms2.3.3参考&#xff1a; superset 安装及连接clickhouse可视化_superset clickhouse-CSDN博客

Python每日一练-DAY03

Question 3 题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和 解题思路一 题目分析: 这道题目要求我们计算一个分数序列的前20项之和。 这个分数序列中,每一项的分子是前两项的分子之和,分母是前两项的分母之和。 例如,第三项的分子为2+3=5…

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

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

分析美方推动零信任战略的网络安全创新规律(下)

分析美方推动零信任战略的网络安全创新规律(下) 文章目录 分析美方推动零信任战略的网络安全创新规律(下)前言一、零信任理念产生的成因和创新价值(一)零信任是在传统IT边界消亡时对安全边界的重塑(二)零信任是对原有安全能力体系的重新整合(三)零信任创新的价值在于…

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、修改配置文…

阿里云大数据ACA及ACP复习题(121~140)

121.数据清洗(Data Cleaning)是用于检测和纠正&#xff08;或删除&#xff09;记录集&#xff0c;表或数据库中的不准确或损坏的记录。下列选项中&#xff0c;对数据清洗描述正确的是(ABC) A:数据清洗可以检测表中的不准确或损坏的记录 B:数据清洗可以识别不正确&#xff0c;不…

多进程实现案例

多进程 多进程&#xff08;简单程序&#xff09; from multiprocessing import Process, Queueclass MyProcess(Process):def __init__(self, q, i):super().__init__()self.q qself.i idef run(self):print(子进程%s 开始put数据 % self.i)self.q.put(我是%s 通过Queue通信…

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 公钥传…

C //练习 5-3 用指针方式实现第2章中的函数strcat。函数strcat(s, t)将t指向的字符串复制到s指向的字符串的尾部。

C程序设计语言 &#xff08;第二版&#xff09; 练习 5-3 练习 5-3 用指针方式实现第2章中的函数strcat。函数strcat(s, t)将t指向的字符串复制到s指向的字符串的尾部。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要变更。…

表对象的标识

表对象标识 kingbase中表作为数据库对象具有一个系统内部的唯一标识符&#xff0c;这个标识符被称为oid&#xff08;对象标识符&#xff09;&#xff0c;它是kingbase用来在整个数据集群中唯一地标识每个数据库对象的一个字段。对于表来说&#xff0c;其OID可以在系统目录表sy…

Pandoc:markdown转word

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

JavaScript-jQuery1-笔记

每个页面中一定要先引入jQuery文件 使用this 在jQuery中在一定要使用$(this) 代表当前对象 1.jQuery获取元素对象 $(选择器) 选择器可以是&#xff1a;标签选择器、类选择器、ID选择器、后代选择器、子元素选择器、全局选择器 $(button) 2.绑定事件 $(选择器).事件类型( 事件…

斯坦福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;除…