C基础-标准库下

上:http://t.csdnimg.cn/qj5uA

目录

七. math.h

八. setjmp.h

九. signal.h

十. stdarg.h

十一.stddef.h

十二. stdio.h

十三. stdlib.

十四. string.h

十五. time.h


七. math.h

定义了各种数学函数和一个宏。

宏和函数描述

序号宏 & 描述
1HUGE_VAL

当函数的结果不可以表示为浮点数时。如果是因为结果的幅度太大以致于无法表示,则函数会设置 errno 为 ERANGE 来表示范围错误,并返回一个由宏 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一个特定的很大的值。

如果结果的幅度太小,则会返回零值。在这种情况下,error 可能会被设置为 ERANGE,也有可能不会被设置为 ERANGE。

序号函数 & 描述
1double acos(double x)
返回以弧度表示的 x 的反余弦。
2double asin(double x)
返回以弧度表示的 x 的反正弦。
3double atan(double x)
返回以弧度表示的 x 的反正切。
4double atan2(double y, double x)
返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。
5double cos(double x)
返回弧度角 x 的余弦。
6double cosh(double x)
返回 x 的双曲余弦。
7double sin(double x)
返回弧度角 x 的正弦。
8double sinh(double x)
返回 x 的双曲正弦。
9double tanh(double x)
返回 x 的双曲正切。
10double exp(double x)
返回 e 的 x 次幂的值。
11double frexp(double x, int *exponent)
把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent。
12double ldexp(double x, int exponent)
返回 x 乘以 2 的 exponent 次幂。
13double log(double x)
返回 x 的自然对数(基数为 e 的对数)。
14double log10(double x)
返回 x 的常用对数(基数为 10 的对数)。
15double modf(double x, double *integer)
返回值为小数部分(小数点后的部分),并设置 integer 为整数部分。
16double pow(double x, double y)
返回 x 的 y 次幂。
17double sqrt(double x)
返回 x 的平方根。
18double ceil(double x)
返回大于或等于 x 的最小的整数值。
19double fabs(double x)
返回 x 的绝对值。
20double floor(double x)
返回小于或等于 x 的最大的整数值。
21double fmod(double x, double y)
返回 x 除以 y 的余数。

源码截图:

例子:

源码:

#include <stdio.h>
#include <math.h>int main() {double a = 2.0;double b = -2.0;//打印a的平方根printf("a的平方根 %f \n", sqrt(a));//打印a的3次方根printf("a的3次方根 %f \n", pow(a,3));//打印b的绝对值printf("打印b的绝对值 %f \n", fabs(b));return 0;
}

八. setjmp.h

定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。

源码

例子

1.不加跳转

2.加上跳转

源码:

#include <stdio.h>
#include <setjmp.h>void a() {printf("执行a函数");
}void b() {printf("执行b函数");
}int main() {jmp_buf env;if (setjmp(env) == 0) {// 这里是正常执行的代码a();longjmp(env, 0);}else {// 这是从 longjmp 跳转回来后执行的代码b();}return 0;
}

九. signal.h

调用函数和一些宏来处理程序执行期间报告的不同信号。

  1. 信号处理函数:通过 signal 函数可以注册信号处理函数,当指定的信号发生时,系统会调用相应的处理函数。
  2. 信号发送:可以使用 raise 函数向当前进程发送指定的信号。
  3. 信号屏蔽:可以使用 sigprocmask 函数来设置信号屏蔽字,以控制哪些信号被阻塞或不被阻塞。
  4. 信号等待:可以使用 sigsuspend 函数来等待一个或多个信号的发生。

源码截图

例子:

源码

#include <stdio.h>
#include <signal.h>void sigusr1Handler(int sig) {printf("收到!\n");
}int main() {printf("注册 SIGINT 信号的处理函数.\n");// 注册 SIGINT 信号的处理函数signal(SIGINT, sigusr1Handler);printf("下面信号发送.\n");raise(SIGINT);// while (1) {}return 0;
}

十. stdarg.h

主要用于实现可变参数列表的相关操作。

宏描述

序号宏 & 描述
1void va_start(va_list ap, last_arg)
这个宏初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。
2type va_arg(va_list ap, type)
这个宏检索函数参数列表中类型为 type 的下一个参数。
3void va_end(va_list ap)
这个宏允许使用了 va_start 宏的带有可变参数的函数返回。如果在从函数返回之前没有调用 va_end,则结果为未定义。

源码截图;

例子:

源码:

#include <stdio.h>
#include <stdarg.h>void print_args(int count, ...) {va_list args;va_start(args, count);for (int i = 0; i < count; i++) {int num = va_arg(args, int);printf("Arg %d: %d\n", i, num);}va_end(args);
}int main() {print_args(3, 10, 20, 30);return 0;
}

十一.stddef.h

包含了一些通用的定义和类型声明。

变量描述

序号变量 & 描述
1ptrdiff_t
这是有符号整数类型,它是两个指针相减的结果。
2size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
3wchar_t
这是一个宽字符常量大小的整数类型。

源码截图

例子:

源码

#include <stdio.h>
#include <stddef.h>int main() {size_t arraySize = 10;printf("Size: %zu\n", arraySize);return 0;
}

十二. stdio.h

标准输入输出头文件)是 C 语言中非常重要的头文件,包含了许多与标准输入、输出操作相关的函数和宏定义。

一些主要的函数和操作包括:

  • printf():格式化输出数据到标准输出(通常是屏幕)。
  • scanf():从标准输入(通常是键盘)读取格式化的数据。
  • fopen()fclose():用于文件的打开和关闭操作。
  • fprintf()fscanf():用于对文件进行格式化输入输出。
  • putchar():输出一个字符。
  • getchar():获取一个字符。

源码:

例子:

源码:

#include <stdio.h>int main() {printf("Hello, World!\n");printf("You entered: %d\n", 1);return 0;
}

十三. stdlib.

包含了一系列实用的函数和宏。

以下是一些常见的用途:

  • malloc() 和 free() 用于动态内存分配和释放。
  • atoi() 用于将字符串转换为整数。
  • rand() 用于生成随机数。
  • exit() 用于终止程序。

源码:

例子:

源码:

#include <stdio.h>
#include <stdlib.h>int main() {int* ptr = (int*)malloc(sizeof(int));if (ptr) {*ptr = 42;printf("Value at allocated memory: %d\n", *ptr);free(ptr);}int num = atoi("123");printf("Converted integer: %d\n", num);return 0;
}

十四. string.h

包含了很多用于字符串操作的函数.

以下是一些常见的:

  • strcpy():用于复制字符串。
  • strncpy():指定长度的字符串复制。
  • strcat():连接两个字符串。
  • strncat():指定长度的字符串连接。
  • strcmp():比较两个字符串。
  • strncmp():指定长度的字符串比较。
  • strlen():获取字符串的长度。

源码

例子:

源码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>int main() {char src[] = "Hello";char dst[10];strcpy(dst, src);printf("Copied string: %s\n", dst);char str1[] = "Apple";char str2[] = "ApplePie";if (strcmp(str1, str2) == 0) {printf("Strings are equal\n");}else {printf("Strings are not equal\n");}return 0;
}

十五. time.h

主要用于时间相关的操作。

以下是一些常见的用法:

  • time_t 类型,通常用于表示时间。
  • time() 函数获取当前时间(以秒为单位)。
  • ctime() 函数将时间转换为字符串表示。
  • localtime() 函数将时间转换为本地时间的结构体表示。

源码截图

例子:

源码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>int main() {time_t now = time(NULL);printf("Current time in seconds: %ld\n", now);char* timeStr = ctime(&now);printf("Current time as string: %s", timeStr);struct tm* localTime = localtime(&now);printf("Year: %d\n", localTime->tm_year + 1900);return 0;
}

ps:需要在年份上加上1900,在月份上加上1,这是因为localtime函数返回的结构体中的年份和月份是从1900年和1月开始计数的。

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

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

相关文章

Vue3——实现word,pdf上传之后,预览功能(实测有效)

vue-office/pdf - npm支持多种文件(**docx、excel、pdf**)预览的vue组件库&#xff0c;支持vue2/3。也支持非Vue框架的预览。. Latest version: 2.0.2, last published: a month ago. Start using vue-office/pdf in your project by running npm i vue-office/pdf. There are …

Mybatis实现树形结构方式

1&#xff0c;三级分类树形结构查询 /*** DDD(Domain-Driven Design): 领域驱动设计** 三级分类树形结构&#xff1b;* 支持无限层级&#xff1b;* 当前项目只有三级*/ Data public class CategoryTreeTo {private Long categoryId; //1private String categoryName;private …

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata),附常见问题

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据&#xff08;带有Metadata&#xff09; 文章目录 ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据&#xff08;带有Metadata&#xff09;前言数据下载ENVI 5.3打开Landsat 8 C2L2级别数据ENVI 5.3打开Landsat 9 C2L2级别数据ENVI 6.0打开La…

手写防抖debounce

手写防抖debounce 应用场景 当需要在事件频繁触发时&#xff0c;只执行最后一次操作&#xff0c;可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件&#xff1b; 这段代码定义了一个名为 debounce 的函数&#xff0c;它接收两个参数&#xff1a;fn…

颠覆传统:探索Web3对传统计算机模式的冲击

随着Web3技术的崛起&#xff0c;传统计算机模式正面临着前所未有的冲击与挑战。Web3作为下一代互联网的代表&#xff0c;以其去中心化、安全可信的特性&#xff0c;正在颠覆着传统计算机模式的种种假设和局限性。本文将深入探讨Web3对传统计算机模式的冲击&#xff0c;并探索其…

关于stm32的复用和重映射问题

目录 需求IO口的复用和重映射使用复用复用加重映射 总结参考资料 需求 一开始使用stm32c8t6&#xff0c;想实现pwm输出&#xff0c;但是原电路固定在芯片的引脚PB10和PB11上&#xff0c;查看了下引脚的功能&#xff0c;需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。…

PMP应考小技巧有哪些?

首先&#xff0c;制定合理的学习计划。将备考过程分解为小目标&#xff0c;并为每个目标设定截止日期。这样可以帮助我们有条不紊地进行学习&#xff0c;避免拖延和压力过大。 其次&#xff0c;选择适合自己的学习资源。PMP考试教材众多&#xff0c;可以选择一本权威的教材作为…

Idea-Linux远程开发部署

第一步&#xff1a;File->Remote Development 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a;在Host位置填写Linux虚拟机的IP地址&#xff0c;在Username、Password填写对应的账号密码后点击Test Connection测试连接。 第五步&#xff1a; 第六步&#xff1a;在…

项目:仿RabbitMQ实现的消息队列组件

文章目录 写在前面开源仓库和项目上线其他文档说明 需求分析BrokerServer交换机类型持久化消息应答 模块划分服务端模块客户端模块交换机数据管理模块队列数据管理模块绑定数据管理模块消息数据管理模块队列信息管理模块虚拟机数据管理模块路由匹配模块消费者管理模块信道管理模…

折半查找二分查找

简介 折半查找也就是二分查找&#xff0c;也可以叫二分法&#xff0c;本质上都是一样的&#xff0c;通过比对中间值与目标值&#xff0c;一次性就能筛掉一半的数字。 举例&#xff1a; 一个猜数字游戏&#xff0c;让你来猜1-100中我选中的数&#xff0c;如果猜中游戏结束&…

露营地管理小程序基于ThinkPHP+FastAdmin+UniApp开发

应用介绍 本文来自&#xff1a;露营地管理小程序基于ThinkPHPFastAdminUniApp开发 - 源码1688 基于ThinkPHPFastAdminUniApp开发的现代化的露营地管理小程序&#xff0c;是专为露营业务设计开发小程序应用。平台拥有多角色管理&#xff0c;同时具有营位预定、门票购买等功能模…

【距离四六级只剩一个星期!】刘晓艳四级保命班课程笔记(2)(可分享治资料~)

这一节是专门的听力课程&#xff0c;众所周知&#xff0c;咱们刘晓艳刘老师的口语不是特别的突出&#xff0c;当然口才是一流的☝️。 文章目录 听力预判听前预判 听力过程八大出题关键点视听一致同义转换 听完一道题后平时练习精听步骤 听力预判 听前预判 画关键词&#xff…

融合通信系统 | 让传统通信沟通无边界

随着通信技术以及互联网的发展&#xff0c;融合通信在各行各业中的应用日益增多&#xff0c;融合通信多样的通信方式为行业用户带来了极佳的通信体验&#xff0c;助力各行各业蓬勃发展&#xff0c;同时也为人们的生活和工作带来了极大的便利和效率。 融合通信系统是一种集成多种…

C语言基础——数组(2)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言基础&#xff1b; 文章目录 前言 一、二维数组的创建 1.1 二维数组的概念 1.2二维数组的创建 二、二维数组…

四川古力未来科技抖音小店:诚信之选,品质铸就信赖之路

在当今这个数字化、网络化的时代&#xff0c;电商平台如雨后春笋般涌现&#xff0c;抖音小店作为其中的佼佼者&#xff0c;以其独特的经营模式和广泛的用户基础&#xff0c;吸引了越来越多的消费者。而在这众多的抖音小店中&#xff0c;四川古力未来科技抖音小店凭借其卓越的品…

头颈肿瘤在PET/CT中的分割:HECKTOR挑战赛| 文献速递-深度学习肿瘤自动分割

Title 题目 Head and neck tumor segmentation in PET/CT: The HECKTOR challenge 头颈肿瘤在PET/CT中的分割&#xff1a;HECKTOR挑战赛 01 文献速递介绍 高通量医学影像分析&#xff0c;常被称为放射组学&#xff0c;已显示出其在揭示定量影像生物标志物与癌症预后之间关…

基于单片机的超声波倒车雷达设计

摘 要&#xff1a;文 章设计了一种基于单片机的超声波倒车雷达系统&#xff0c;以 AT89C51 型单片机作为控制核心&#xff0c;集距离测量、显示&#xff0c;方位显示和危险报警于一体&#xff0c;以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…

已办理劳务资质,为何无法在全国建筑市场网查询到企业?

已办理劳务资质的企业无法在全国建筑市场网&#xff08;四库一平台&#xff09;查询到&#xff0c;可能的原因如下&#xff1a; 数据更新延迟&#xff1a; 全国建筑市场监管公共服务平台&#xff08;四库一平台&#xff09;的数据更新可能存在延迟。新获得的劳务资质信息在平台…

第一次参加学术会议?来看看这份NeurIPS 2024的参会攻略

会议之眼 快讯 嘿&#xff0c;亲爱的学者们&#xff01;有没有还没参加过学术会议的同学呢&#xff1f;别担心&#xff0c;今天小编就来给大家分享一份超实用的参会攻略&#xff0c;以人工智能领域备受瞩目的NeurIPS 2024为例&#xff0c;让你第一次参加学术会议就能像个老手一…

day4 数1 隐函数

基础知识 隐函数 &#xff1a;一个方程里边 使x有1个y与之对应 函数的有界性 f(X) 的值大于-M并小于M 单调性 可以用定义发判断单调性 定义法 奇函数 奇函数关于原点对称&#xff0c;偶关于x对称 定义域要关于原点对称 任何一个函数可以写成奇函数偶函数的形式 复合函数的…