C语言笔记 15_标准库&locale&math&setjmp&signal&stdarg&stddef
<locale.h>
简介
locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数。
库宏
下面列出了头文件 locale.h 中定义的宏,这些宏将在下列的两个函数中使用:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | LC_ALL 设置下面的所有选项。 |
| 2 | LC_COLLATE 影响 strcoll 和 strxfrm 函数。 |
| 3 | LC_CTYPE 影响所有字符函数。 |
| 4 | LC_MONETARY 影响 localeconv 函数提供的货币信息。 |
| 5 | LC_NUMERIC 影响 localeconv 函数提供的小数点格式化和信息。 |
| 6 | LC_TIME 影响 strftime 函数。 |
库函数
下面列出了头文件 locale.h 中定义的函数:
| 序号 | 函数 & 描述 |
|---|---|
| 1 | char *setlocale(int category, const char *locale) 设置或读取地域化信息。 |
| 2 | struct lconv *localeconv(void) 设置或读取地域化信息。 |
库结构
typedef struct {
char *decimal_point;
char *thousands_sep;
char *grouping;
char *int_curr_symbol;
char *currency_symbol;
char *mon_decimal_point;
char *mon_thousands_sep;
char *mon_grouping;
char *positive_sign;
char *negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
} lconv
以下是各字段的描述:
| 序号 | 字段 & 描述 |
|---|---|
| 1 | decimal_point 用于非货币值的小数点字符。 |
| 2 | thousands_sep 用于非货币值的千位分隔符。 |
| 3 | grouping 一个表示非货币量中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组。 |
| 4 | int_curr_symbol 国际货币符号使用的字符串。前三个字符是由 ISO 4217:1987 指定的,第四个字符用于分隔货币符号和货币量。 |
| 5 | currency_symbol 用于货币的本地符号。 |
| 6 | mon_decimal_point 用于货币值的小数点字符。 |
| 7 | mon_thousands_sep 用于货币值的千位分隔符。 |
| 8 | mon_grouping 一个表示货币值中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组。 |
| 9 | positive_sign 用于正货币值的字符。 |
| 10 | negative_sign 用于负货币值的字符。 |
| 11 | int_frac_digits 国际货币值中小数点后要显示的位数。 |
| 12 | frac_digits 货币值中小数点后要显示的位数。 |
| 13 | p_cs_precedes 如果等于 1,则 currency_symbol 出现在正货币值之前。如果等于 0,则 currency_symbol 出现在正货币值之后。 |
| 14 | p_sep_by_space 如果等于 1,则 currency_symbol 和正货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和正货币值之间不使用空格分隔。 |
| 15 | n_cs_precedes 如果等于 1,则 currency_symbol 出现在负货币值之前。如果等于 0,则 currency_symbol 出现在负货币值之后。 |
| 16 | n_sep_by_space 如果等于 1,则 currency_symbol 和负货币值之间使用空格分隔。如果等于 0,则 currency_symbol 和负货币值之间不使用空格分隔。 |
| 17 | p_sign_posn 表示正货币值中正号的位置。 |
| 18 | n_sign_posn 表示负货币值中负号的位置。 |
下面的值用于 p_sign_posn 和 n_sign_posn:
| 值 | 描述 |
|---|---|
| 0 | 封装值和 currency_symbol 的括号。 |
| 1 | 放置在值和 currency_symbol 之前的符号。 |
| 2 | 放置在值和 currency_symbol 之后的符号。 |
| 3 | 紧挨着放置在值和 currency_symbol 之前的符号。 |
| 4 | 紧挨着放置在值和 currency_symbol 之后的符号。 |
<math.h>
简介
math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的功能都带有一个 double 类型的参数,且都返回 double 类型的结果。
库宏
下面是这个库中定义的唯一的一个宏:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | HUGE_VAL 当函数的结果不可以表示为浮点数时。如果是因为结果的幅度太大以致于无法表示,则函数会设置 errno 为 ERANGE 来表示范围错误,并返回一个由宏 HUGE_VAL 或者它的否定(- HUGE_VAL)命名的一个特定的很大的值。如果结果的幅度太小,则会返回零值。在这种情况下,error 可能会被设置为 ERANGE,也有可能不会被设置为 ERANGE。 |
库函数
下面列出了头文件 math.h 中定义的函数:
| 序号 | 函数 & 描述 |
|---|---|
| 1 | double acos(double x) 返回以弧度表示的 x 的反余弦。 |
| 2 | double asin(double x) 返回以弧度表示的 x 的反正弦。 |
| 3 | double atan(double x) 返回以弧度表示的 x 的反正切。 |
| 4 | double atan2(double y, double x) 返回以弧度表示的 y/x 的反正切。y 和 x 的值的符号决定了正确的象限。 |
| 5 | double cos(double x) 返回弧度角 x 的余弦。 |
| 6 | double cosh(double x) 返回 x 的双曲余弦。 |
| 7 | double sin(double x) 返回弧度角 x 的正弦。 |
| 8 | double sinh(double x) 返回 x 的双曲正弦。 |
| 9 | double tanh(double x) 返回 x 的双曲正切。 |
| 10 | double exp(double x) 返回 e 的 x 次幂的值。 |
| 11 | double frexp(double x, int *exponent) 把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。所得的值是 x = mantissa * 2 ^ exponent。 |
| 12 | double ldexp(double x, int exponent) 返回 x 乘以 2 的 exponent 次幂。 |
| 13 | double log(double x) 返回 x 的自然对数(基数为 e 的对数)。 |
| 14 | double log10(double x) 返回 x 的常用对数(基数为 10 的对数)。 |
| 15 | double modf(double x, double *integer) 返回值为小数部分(小数点后的部分),并设置 integer 为整数部分。 |
| 16 | double pow(double x, double y) 返回 x 的 y 次幂。 |
| 17 | double sqrt(double x) 返回 x 的平方根。 |
| 18 | double ceil(double x) 返回大于或等于 x 的最小的整数值。 |
| 19 | double fabs(double x) 返回 x 的绝对值。 |
| 20 | double floor(double x) 返回小于或等于 x 的最大的整数值。 |
| 21 | double fmod(double x, double y) 返回 x 除以 y 的余数。 |
<setjmp.h>
简介
setjmp.h 头文件定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。
库变量
下面列出了头文件 setjmp.h 中定义的变量:
| 序号 | 变量 & 描述 |
|---|---|
| 1 | jmp_buf 这是一个用于存储宏 setjmp() 和函数 longjmp() 相关信息的数组类型。 |
库宏
下面是这个库中定义的唯一的一个宏:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | int setjmp(jmp_buf environment) 这个宏把当前环境保存在变量 environment 中,以便函数 longjmp() 后续使用。如果这个宏直接从宏调用中返回,则它会返回零,但是如果它从 longjmp() 函数调用中返回,则它会返回一个非零值。 |
库函数
下面是头文件 setjmp.h 中定义的唯一的一个函数:
| 序号 | 函数 & 描述 |
|---|---|
| 1 | void longjmp(jmp_buf environment, int value) 该函数恢复最近一次调用 setjmp() 宏时保存的环境,jmp_buf 参数的设置是由之前调用 setjmp() 生成的。 |
<signal.h>
简介
signal.h 头文件定义了一个变量类型 sig_atomic_t、两个函数调用和一些宏来处理程序执行期间报告的不同信号。
库变量
下面是头文件 signal.h 中定义的变量类型:
| 序号 | 变量 & 描述 |
|---|---|
| 1 | sig_atomic_t 这是 int 类型,在信号处理程序中作为变量使用。它是一个对象的整数类型,该对象可以作为一个原子实体访问,即使存在异步信号时,该对象可以作为一个原子实体访问。 |
库宏
下面是头文件 signal.h 中定义的宏,这些宏将在下列两个函数中使用。SIG_ 宏与 signal 函数一起使用来定义信号的功能。
| 序号 | 宏 & 描述 |
|---|---|
| 1 | SIG_DFL 默认的信号处理程序。 |
| 2 | SIG_ERR 表示一个信号错误。 |
| 3 | SIG_IGN 忽视信号。 |
SIG 宏用于表示以下各种条件的信号码:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | SIGABRT 程序异常终止。 |
| 2 | SIGFPE 算术运算出错,如除数为 0 或溢出。 |
| 3 | SIGILL 非法函数映象,如非法指令。 |
| 4 | SIGINT 中断信号,如 ctrl-C。 |
| 5 | SIGSEGV 非法访问存储器,如访问不存在的内存单元。 |
| 6 | SIGTERM 发送给本程序的终止请求信号。 |
库函数
下面是头文件 signal.h 中定义的函数:
| 序号 | 函数 & 描述 |
|---|---|
| 1 | void (signal(int sig, void (func)(int)))(int) 该函数设置一个函数来处理信号,即信号处理程序。 |
| 2 | int raise(int sig) 该函数会促使生成信号 sig。sig 参数与 SIG 宏兼容。 |
<stdarg.h>
简介
stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。
可变参数的函数通在参数列表的末尾是使用省略号(,...)定义的。
库变量
下面是头文件 stdarg.h 中定义的变量类型:
| 序号 | 变量 & 描述 |
|---|---|
| 1 | va_list 这是一个适用于 va_start()、va_arg() 和 va_end() 这三个宏存储信息的类型。 |
库宏
下面是头文件 stdarg.h 中定义的宏:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | void va_start(va_list ap, last_arg) 这个宏初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。 |
| 2 | type va_arg(va_list ap, type) 这个宏检索函数参数列表中类型为 type 的下一个参数。 |
| 3 | void va_end(va_list ap) 这个宏允许使用了 va_start 宏的带有可变参数的函数返回。如果在从函数返回之前没有调用 va_end,则结果为未定义。 |
<stddef.h>
简介
stddef .h 头文件定义了各种变量类型和宏。这些定义中的大部分也出现在其它头文件中。
库变量
下面是头文件 stddef.h 中定义的变量类型:
| 序号 | 变量 & 描述 |
|---|---|
| 1 | ptrdiff_t 这是有符号整数类型,它是两个指针相减的结果。 |
| 2 | size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 |
| 3 | wchar_t 这是一个宽字符常量大小的整数类型。 |
库宏
下面是头文件 stddef.h 中定义的宏:
| 序号 | 宏 & 描述 |
|---|---|
| 1 | NULL 这个宏是一个空指针常量的值。 |
| 2 | offsetof(type, member-designator) 这会生成一个类型为 size_t 的整型常量,它是一个结构成员相对于结构开头的字节偏移量。成员是由 member-designator 给定的,结构的名称是在 type 中给定的。 |
参考自:https://www.runoob.com/cprogramming/c-tutorial.html
C语言笔记 15_标准库&locale&math&setjmp&signal&stdarg&stddef的更多相关文章
- C语言笔记 14_标准库&assert&ctype&errno&float&limits
C 标准库 <assert.h> 简介 C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息. 已定义的宏 ass ...
- C语言笔记 16_标准库&stdio&stdlib&string&time
<stdio.h> 简介 stdio .h 头文件定义了三个变量类型.一些宏和各种函数来执行输入和输出. 库变量 下面是头文件 stdio.h 中定义的变量类型: 序号 变量 & ...
- c++ 11开始语言本身和标准库支持并发编程
c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...
- C 标准库 - <locale.h>
C 标准库 - <locale.h> 简介 locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号.接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两 ...
- windows下的c语言和linux 下的c语言以及C标准库和系统API
1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...
- C语言日期时间标准库
用思维导图整理: 代码: #include <stdio.h> #include <time.h> #include <string.h> int main() { ...
- C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
一.string #include <string> using std::string 初始化函数: string s1; 默认构造函数 s1 为空串 ...
- C++ Primer 学习笔记_6_标准库类型 -- 命名空间using与string类型
标准库类型(一) --命名空间using与string类型 引: 标准库类型是语言组成部分中更主要的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:由 ...
- Go语言系列之标准库log
Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log的基本使用. 使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法.本包也提供了一个预定义的" ...
随机推荐
- 034、Java中自增之++在前面的写法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 拓扑排序--P2881 [USACO07MAR]排名的牛Ranking the Cows
*传送 FJ想按照奶牛产奶的能力给她们排序.现在已知有N头奶牛(1 ≤ N ≤ 1,000).FJ通过比较,已经知道了M(1 ≤ M ≤ 10,000)对相对关系.每一对关系表示为“X Y”,意指X的 ...
- 【学CG系列】web之审查元素
一.审查元素的作用 审查元素(你的F12)可以做到定位网页元素.实时监控网页元素属性变化的功能,可以及时调试.修改.定位.追踪检查.查看嵌套 ,修改样式和查看js动态输出信息,是开发人员得心应手的好工 ...
- Sass - &引用父选择器
描述: 您可以使用&字符选择父级选择器. 它告诉父选择器应该插入的位置. 例一:&在前 h3 { font-size: 20px margin-bottom: 10px &.s ...
- Python 列表/元组/字典总结
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...
- 040-PHP使用闭包函数来进行父实例的变量自增,正确示例
<?php // 如何使用闭包函数来进行父实例的变量自增 function demo(){ $num = 1; # 给use的变量加个&符合,就能改变对应参数的域的限制 $func = ...
- 5. 支撑高并发,高可用,海量数据备份恢复的Redis重要性
商品详情页的架构实现 缓存架构 第一块儿,要掌握的很好的,就是redis架构 高并发,高可用,海量数据,备份,随时可以恢复,缓存架构如果要支撑这些要点,首先呢,redis就得支撑 redis架构,每秒 ...
- IISHelper操作iis
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- java开发 中台
中台就是接入层啊,一般有中台的都是比较大的项目,后台会分为很多模块,比如订单模块,比如会员模块,接入层需要做的就是对数据的封装,权限的过滤,以及各种安全什么的, 前台需要什么数据,接入层去对应的后台微 ...
- OIer常见问题与错误总结
作为一名OIer,无论是一名刚入门的蒟蒻,还是叱诧风云的神犇,相信都会难免去犯一些错误(废话不犯错误岂不是都满分了(ノへ ̄.).在这里总结了一些OIer常见易犯的错误,与大家共勉. 1.正常错误 可能 ...