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 …

怎么样的电销机器人才是好的?智能语音机器人部署

在现代社会&#xff0c;营销策略对于企业的成功至关重要。随着技术的发展&#xff0c;电销机器人正在改变传统营销模式&#xff0c;取而代之的是更高效&#xff0c;更自动化和更个性化的方式。 当然&#xff0c;如何选择合适的电销机器人是很重要的。所以&#xff0c;我们就来看…

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…

RDMA介绍

RDMA全称是Remote Direct Memory Access&#xff0c;即远程直接内存访问&#xff0c;是一种高性能网络通信技术&#xff0c;可以使计算机直接访问远端计算机的内存&#xff0c;而无需在本地和远程计算机之间进行数据复制。 相比于传统的网络通信方式&#xff0c;RDMA技术具有更…

手写防抖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;没有快进快出那一套&#xff0c;我们喜欢追求一个店铺的长期经营&#xff0c;长期产出&#xff0c;我们的逻辑是&#xff0c;产品可以死&#xff0c;…

折半查找二分查找

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

elementUI输入框/选项卡与百度地图联动

文章目录 输入框/选项卡与百度地图联动示例html部分用到的插件main.js 输入框/选项卡与百度地图联动 示例 输入框/选项卡与百度地图联动 html部分 <template><el-form ref"Froms" :model"formData" label-width"120px"><el-for…

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

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

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

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

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

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

PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换

日期操作 一、根据日期生成日期数组 /*** 根据指定日期生成日期数组* param $start_time 开始时间* param $end_time 结束时间* return array 返回数组结果*/ function createDateArr($start_time, $end_time) {$open_start_time $start_time;$open_end_time $end_ti…

leetcode 1103.分糖果II

思路&#xff1a;模拟 其实就是用num_people取余就行了&#xff0c;如果说特别一点的话&#xff0c;就是candies的判断了。 如果说当前的candies能够分发出来&#xff0c;那么这个candies就按照题目要求分发即可&#xff1b;如果说不够&#xff0c;那么只能分给当前小朋友can…

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

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