-
2021-05-19 16:22:50
参考文章
数据类型一览表
算数类型(arithmetic type)
字符类型
signed char 有符号字符
unsigned char 无符号字符
char 字符(可以是 signed char 或 unsigned char,由实现定义)
// 除此之外,还定义了宽字符(c11):
1. wchar_t
2. char16_t
3. char32_t
整数类型
1. 短整形
short
signed short
short int
signed short int
// 等价于
short int
2. 无符号短整形
unsigned short
unsigned short int
// 等价于
unsigned short int
3. 整形
signed
int
signed int
// 等价于
int
4. 无符号整形
unsigned
unsigned int
// 等价于
unsigned int
5. 长整型
long
long int
signed long
signed long int
// 等价于
long int
6. 无符号长整型
unsigned long
unsigned long int
// 等价于
unsigned long int
7. long long int(c99,不懂该怎么称呼了...)
long long
long long int
signed long long
signed long long int
// 等价于
long long int
8. unsigned long long int(c99)
unsigned long long
unsigned long long int
// 等价于
unsigned long long int
数据模型
每种实现对数据类型的大小选择统称为 数据模型,以下四种是大家普遍接受的数据模型:
32 System
1. LP32 2/4/4,(int 16bit,long & pointer 32bit)
1. 仅出现在 win16 API 中
2. LP32 4/4/4,(int,long,pointer 32bit)
1. win32 API
2. 类 unix 系统(linux or mac)
64 System
3. LP64 4/4/8,(int & long 32big,pointer 64 bit)
4. LP64 4/8/8,(int 32 bit,long & pointer 64 bit)
其他模型非常罕见(几乎可以不用理会,实际就是无需理会)!举一个例子,数据模型 LP64 8/8/8(int & long & pointer 64 bit),这种数据模型只出现在早期的 unix 机器上
浮点类型
1. float 单精度浮点型 32bit(4byte)
2. double 双精度浮点型 64bit(8byte)
3. long double 扩展精密浮点型(需要机器支持) >=64 bit
如果使用了 complex.h,表示需要用到复杂的浮点数
以下写法都是有效的:
float _complex float complex
double _complex double complex
long double _complex long double complex
float _imaginary float imaginary
double _imaginary double imaginary
long double _imaginary long double imaginary
原子类型(atomic type),限定符
支持以下三种写法:
// p 是指向原子 const int 的指针
_Atomic const int * p1;
// 同上
const atomic_int * p2;
// 同上
const Atomic(int) * p3;
原子类型的对象是唯一不受数据竞争的对象,也就是说,它们可以由两个线程并发地修改,或者由另一个线程修改。
拥有以下四个相关属性:
1. 写入一致性(write-write-coherence)
2. 读取一致性(read-read-coherence)
3. 读写一致性(read-write-coherence)
4. 写读一致性(write-read-coherence)
具体解释参考官方文档:atomic type
目前的 visual studio 中不支持该类型
由 typedef 引入的说明符
// 声明 int_t 是 int 的别名
typedef int int_t
// 进阶
// char_t 是 char 的别名
// chart_p 是 char* 的别名
// fp 是 char(*)(void) 的别名
typedef char char_t, *char_p, (*fp)(void)
修饰符
const
// 常量不可改动
const int a = 10;
volatile
// 提醒计算机:
// a 变量可能会实时更新,不能缓存
// 这个一般多用在多线程场景下
volatile int a = 10;
restrict
特殊的常量
INFINITY 无穷
NaN 非数字
数值范围
如果需要准确的了解到数值的范围,请参阅(页面底部):各种类型对应的数值范围
更多相关内容 -
语言标准函数库速查
2018-08-27 15:53:04定义浮点型数值四舍五入的方式,-1是不确定,0是向0,1是向最近,2是向正无穷大,3是负无穷大 FLT_RADIX 2 定义指数的基本表示(比如base-2是二进制,base-10是十进制表示法,16是十六进制) FLT_MANT_DIG,...功能与pow一致,只是输入与输出皆为浮点数
因此请参考 pow....
-----------------------------------------------
原型:extern float pow(float x, float y);
用法:#include <math.h>
功能:计算x的y次幂。
说明:x应大于零,返回幂指数的结果。
举例:
// pow.c
#include <syslib.h>
#include <math.h>
main()
{
clrscr(); // clear screen
textmode(0x00); // 6 lines per LCD screen
printf("4^5=%f",pow(4.,5.));
getchar();
return 0;
}C语言函数搜索框:
C语言标准头
<assert.h> 断言
<ctype.h> 字符类测试
<errno.h> (部分)库函数抛出的错误代码
<float.h> 浮点数运算
<limits.h> 检测整型数据类型值范围
<locale.h> 本土化
<math.h> 数学函数
<setjmp.h> “非局部跳转”
<signal.h> 信号
<stdarg.h> 可变参数列表
<stddef.h> 一些常数,类型和变量
<stdio.h> 输入和输出
<stdlib.h> 实用功能
<string.h> 字符串函数
<time.h> 时间和日期函数
<assert.h> 断言
头文件<assert.h>唯一的目的是提供宏assert的定义。如果断言非真(expression==0),则程序会在标准错误流输出提示信息,并使程序异常中止调用abort() 。
定义:void assert (int expression);//#define NDEBUG #include <assert.h> int main(int argc, char* argv[]){ int a = 12; int b = 24; assert( a > b ); printf("a is larger than b!"); return 0; }
上面的程序会发现程序中止,printf并未执行,且有这样的输出: main: Assertion `a > b' failed. 原因就是因为a其实小于b,导致断言失败,assert 输出错误信息,并调用abort()中止了程序执行。
<ctype.h> 字符测试
<ctype.h> 主要提供两类重要的函数:字符测试函数和字符大小转化函数。提供的函数中都以int类型为参数,并返回一个int类型的值。实参类型应该隐式转换或者显示转换为int类型。
int isalnum(int c); 判断是否是字母或数字。
int isalpha(int c); 判断是否是字母。
int iscntrl(int c); 判断是否是控制字符。
int isdigit(int c); 判断是否是数字。
int isgraph(int c); 判断是否是可显示字符。
int islower(int c); 判断是否是小写字母。
int isupper(int c); 判断是否是大写字母。
int isprint(int c); 判断是否是可显示字符。
int ispunct(int c); 判断是否是标点字符。
int isspace(int c); 判断是否是空白字符
int isxdigit(int c); 判断字符是否为16进制。
int tolower(int c); 转换为小写字母。
int toupper(int c); 转换为大写字母。
<errno.h> 错误代码
error.h 是 C语言 C标准函式库里的头文件,定义了通过错误码来返回错误信息的宏:
errno 宏定义为一个int型态的左值, 包含任何函数使用errno功能所产生的上一个错误码。
一些表示错误码,定义为整数值的宏:
EDOM 源自于函数的参数超出范围,例如 sqrt(-1)
ERANGE 源自于函数的结果超出范围,例如s trtol("0xfffffffff",NULL,0)
EILSEQ 源自于不合法的字符顺序,例如 wcstombs(str, L"\xffff", 2)<float.h> 浮点数运算
float头文件定义了浮点型数值的最大最小限 浮点型数值以下面的方式定义:符号-value E 指数 符号是正负,value是数字的值
下面的值是用#define定义的,这些值是详细的实现,但是可能没有比这里给出的更详细,
在所有实例里FLT指的是float,DBL是double,LDBL指的是long doubleFLT_ROUNDS
定义浮点型数值四舍五入的方式,-1是不确定,0是向0,1是向最近,2是向正无穷大,3是负无穷大FLT_RADIX 2
定义指数的基本表示(比如base-2是二进制,base-10是十进制表示法,16是十六进制)FLT_MANT_DIG,DBL_MANT_DIG,LDBL_MANT_DIG
定义数值里数字的个数FLT_DIG 6,DBL_DIG 10,LDBL_DIG 10
在四舍五入之后能不更改表示的最大小数位FLT_MIN_EXP,DBL_MIN_EXP,LDBL_MIN_EXP
FLT_RADIX 的指数的最小负整数值FLT_MIN_10_EXP -37,DBL_MIN_10_EXP -37,LDBL_MIN_10_EXP -37
10进制表示法的的指数的最小负整数值FLT_MAX_EXP ,DBL_MAX_EXP ,LDBL_MAX_EXP
FLT_RADIX 的指数的最大整数值FLT_MAX_10_EXP +37 ,DBL_MAX_10_EXP ,LDBL_MAX_10_EXP +37 +37
10进制表示法的的指数的最大整数值FLT_MAX 1E+37,DBL_MAX 1E+37,LDBL_MAX 1E+37
浮点型的最大限FLT_EPSILON 1E-5,DBL_EPSILON 1E-9,LDBL_EPSILON 1E-9
能表示的最小有符号数<limits.h> 取值范围
CHAR_BIT 一个ASCII字符长度
SCHAR_MIN 字符型最小值
SCHAR_MAX 字符型最大值
UCHAR_MAX 无符号字符型最大值
CHAR_MIN
CHAR_MAX
char字符的最大最小值,如果char字符正被表示有符号整数。它们的值就跟有符号整数一样。 否则char字符的最小值就是0,最大值就是无符号char字符的最大值。MB_LEN_MAX 一个字符所占最大字节数
SHRT_MIN 最小短整型
SHRT_MAX 最大短整形
USHRT_MAX 最大无符号短整型
INT_MIN 最小整型
INT_MAX 最大整形
UINT_MAX 最大无符号整型
LONG_MIN 最小长整型
LONG_MAX 最大长整型
ULONG_MAX 无符号长整型
<locale.h> 本土化
国家、文化和语言规则集称为区域设置,<locale.h>头文件中定义了区域设置相关的函数。setlocale函数用于设置或返回当前的区域特性,localeconv用于返回当前区域中的数字和货币信息(保存在struct lconv结构实例中)。setlocale的第一个实参指定要改变的区域行为类别,预定义的setlocale类别有:
LC_ALL
全部本地化信息LC_COLLATE
影响strcoll和strxfrmLC_CTYPE
影响字符处理函数和多行字符处理函数LC_MONETARY
影响localeconv返回的货币格式化信息LC_NUMERIC
影响格式化输入输出字符中的小数点符号LC_TIME
影响strftime函数<locale.h> 头文件中提供了2个函数
setlocale() 设置或恢复本地化信息
localeconv() 返回当前地域设置的信息setlocale(constant,location) 用法
如果这个函数成功执行,将返回当前的场景属性;如果执行失败,将返回False。constant 参数 (必要参数。指定设置的场景信息)
LC_ALL – 所有下属的常量
LC_COLLATE – 排列顺序
LC_CTYPE – 字符分类和转换(例如:将所有的字符转换成小写或大写形式)
LC_MESSAGES – 系统信息格式
LC_MONETARY – 货币 / 通货格式
LC_NUMERIC – 数值格式
LC_TIME – 日期和时间格式
location (必要参数)
必要参数。指定需要进行场景信息设置的国家或区域。它可以由一个字符串或一个数组组成。如果本地区域是一个数组,那么setlocale()函数将尝试每 个数组元素直到它从中获取有效的语言和区域代码信息为止。如果一个区域处于不同操作系统中的不同名称下,那么这个参数将非常有用。
struct lconv *localeconv(void); 用法
localeconv 返回lconv结构指针 lconv结构介绍: 保存格式化的数值信息,保存数值包括货币和非货币的格式化信息,localeconv返回指向该对象的指针,以下为结构中的成员及信息:
char *decimal_point; 数字的小数点号
char *thousands_sep; 数字的千分组分隔符
每个元素为相应组中的数字位数,索引越高的元素越靠左边。一个值为CHAR_MAX的元素表示没有更多的分组了。一个值为0的元素表示前面的元素能用在靠左边的所有分组中
char *grouping; 数字分组分隔符
char *int_curr_symbol; 前面的三个字符ISO 4217中规定的货币符号,第四个字符是分隔符,第五个字符是'\0' */
char *currency_symbol; 本地货币符号
char *mon_decimal_point; 货币的小数点号
char *mon_thousands_sep; 千分组分隔符
char *mon_grouping; 类似于grouping元素
char *positive_sign; 正币值的符号
char *negative_sign; 负币值的符号
char int_frac_digits; 国际币值的小数部分
char frac_digits; 本地币值的小数部分
char p_cs_precedes; 如果currency_symbol放在正币值之前则为1,否则为0
char p_sep_by_space; 当且仅当currency_symbol与正币值之间用空格分开时为1
char n_cs_precedes; < 如果currency_symbol放在负币值之前则为1,否则为0/dt>
char n_sep_by_space; 当且仅当currency_symbol与负币值之间用空格分开时为1
char p_sign_posn; 格式化选项
0 - 在数量和货币符号周围的圆括号
1 - 数量和货币符号之前的 + 号
2 - 数量和货币符号之后的 + 号
3 - 货币符号之前的 + 号
4 - 货币符号之后的 + 号char n_sign_posn 格式化选项
0 - 在数量和货币符号周围的圆括号
1 - 数量和货币符号之前的 - 号
2 - 数量和货币符号之后的 - 号
3 - 货币符号之前的 - 号
4 - 货币符号之后的 - 号最后提示:可以使用setlocale(LC_ALL,NULL)函数将场景信息设置为系统默认值。
<math.h> 数学函数
<math.h> 是C语言中的数学函数库
三角函数
*cot三角函数,可以使用tan(PI/2-x)来实现。
反三角函数double asin(double x);结果介于[-PI/2, PI/2]
double acos(double x); 结果介于[0, PI]
double atan(double x);
反正切(主值), 结果介于[-PI/2, PI/2]double atan2(double y,double);
反正切(整圆值), 结果介于[-PI, PI]
双曲三角函数double sinh(double x); 计算双曲正弦
double cosh(double x); 计算双曲余弦
double tanh(double x); 计算双曲正切
指数与对数double exp(double x); 求取自然数e的幂
double log(double x); 以e为底的对数
double log10(double x); 以10为底的对数
double pow(double x, double y);
计算以x为底数的y次幂float powf(float x, float y);
与pow一致,输入与输出皆为浮点数
取整
标准化浮点数double frexp(double f, int *p);
标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )double ldexp(double x, int p);
与frexp相反, 已知x, p求f
取整与取余double modf(double, double*);
将参数的整数部分通过指针回传, 返回小数部分
double fmod(double, double);
返回两参数相除的余数<setjmp.h> “非局部跳转”
在该头文件中定义了一种特别的函数调用和函数返回顺序的方式。这种方式不同于以往的函数调用和返回顺序,
它允许程序流程立即从一个深层嵌套的函数中返回。
<setjmp.h> 中定义了两个宏:
int setjmp(jmp_buf env); /*设置调转点*/
longjmp(jmp_buf jmpb, int retval); /*跳转*/
宏setjmp的功能是将当前程序的状态保存在结构env ,为调用宏longjmp设置一个跳转点。setjmp将当前信息保存在env中供longjmp使用。其中env是jmp_buf结构类型的。
Demo :#include <stdio.h> #include <setjmp.h> static jmp_buf buf; void second(void) { printf("second\n"); // 打印 longjmp(buf,1); // 跳回setjmp的调用处 - 使得setjmp返回值为1 } void first(void) { second(); printf("first\n"); // 不可能执行到此行 } int main() { if ( ! setjmp(buf) ) { first(); // 进入此行前,setjmp返回0 } else { // 当longjmp跳转回, setjmp返回1,因此进入此行 printf("main\n"); // 打印 } return 0; }
直接调用setjmp时,返回值为0,这一般用于初始化(设置跳转点时)。以后再调用longjmp宏时用env变量进行跳转。程序会自动跳转到setjmp宏的返回语句处,此时setjmp的返回值为非0,由longjmp的第二个参数指定。
一般地,宏setjmp和longjmp是成对使用的,这样程序流程可以从一个深层嵌套的函数中返回。<signal.h> 信号
在signal.h头文件中,提供了一些函数用以处理执行过程中所产生的信号。
宏:
SIG_DFL
SIG_ERR
SIG_IGN
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
函数:
signal();
raise();
变量:
typedef sig_atomic_t
sig_atomic_t 类型是int类型,用于接收signal函数的返回值。
以SIG_开头的宏用于定义信号处理函数
SIG_DFL 默认信号处理函数。
SIG_ERR 表示一个错误信号,当signal函数调用失败时的返回值。
SIG_IGN 信号处理函数,表示忽略该信号。
SIG开头的宏是用来在下列情况下,用来表示一个信号代码:
SIGABRT 异常终止(abort函数产生)。
SIGFPE 浮点错误(0作为除数产生的错误,非法的操作)。
SIGILL 非法操作(指令)。
SIGINT 交互式操作产生的信号(如CTRL - C)。
SIGSEGV 无效访问存储(片段的非法访问,内存非法访问)。
SIGTERM 终止请求。
signal 函数
void(*signal(int sig,void (*func)(int)))(int);
上面的函数定义中,sig 表示一个信号代码(相当于暗号类别),即是上面所定义的SIG开头的宏。当有信号出现(即当收到暗号)的时候,参数func所定义的函数就会被调用。如果func等于SIG_DFL,则表示调用默认的处理函数。如果等于SIG_IGN,则表示这个信号被忽略(不做处理)。如果func是用户自定义的函数,则会先调用默认的处理函数,再调用用户自己定义的函数。 自定义函数,有一个参数,参数类型为int,用来表示信号代码(暗号类别)。同时,函数必须以return、abort、exit 或 longjump等语句结束。当自定义函数运行结束,程序会继续从被终止的地方继续运行。(除非信号是SIGFPE导致结果未定义,则可能无法继续运行)
如果调用signal函数成功,则会返回一个指针,该指针指向为所指定的信号类别的所预先定义的信号处理器。
如果调用失败,则会返回一个SIG_ERR,同时errno的值也会被相应的改变。raise 函数
int raise(int sig);
发出一个信号sig。信号参数为SIG开头的宏。
如果调用成功,返回0。否则返回一个非零值。
<stdarg.h> 可变参数
<stdarg.h> 头文件定义了一些宏,当函数参数未知时去获取函数的参数
变量:typedef va_list
宏:- va_start()
- va_arg()
- va_end()
变量和定义
va_list类型通过stdarg宏定义来访问一个函数的参数表,参数列表的末尾会用省略号省略
声明:void va_start(va_list ap, last_arg);
用va_arg和va_end宏初始化参数ap,last_arg是传给函数的固定参数的最后一个,省略号之前的那个参数 注意va_start必须在使用va_arg和va_end之前调用
声明:type va_arg(va_list ap, type);
用type类型扩展到参数表的下个参数
注意ap必须用va_start初始化,如果没有下一个参数,结果会是undefined
声明:void va_end(va_list ap); 允许一个有参数表(使用va_start宏)的函数返回,如果返回之前没有调用va_end,结果会是undefined。参数变量列表可能不再使用(在没调用va_start的情况下调用va_end)<stddef.h> 一些常数,类型和变量
<stddef.h> 头文件定义了一些标准定义,许多定义也会出现在其他的头文件里
宏命令:NULL 和 offsetof()
变量:
typedef ptrdiff_t
typedef size_t
typedef wchar_t
变量和定义:
ptrdiff_t是两个指针相减的结果
size_t是sizeof一个关键词得到的无符号整数值
wchar_t是一个宽字符常量的大小,是整数类型
NULL是空指针的常量值
offsetof(type, member-designator);这个宏返回一个结构体成员相对于结构体起始地址的偏移量(字节为单位),type是结构体的名字,member-designator是结构体成员的名字。 -
C语言常见头文件汇总
2020-05-12 23:45:54isinf 是无穷大(宏/功能) isnan 不是数字(宏/函数) isnormal 正常(宏/功能) signbit 符号位(宏/功能) 比较宏/功能: isgreater 更大(宏) isgreaterequal 大于或等于(宏) isless 少(宏) islessequal ...目录:
C library:
- (assert.h) 2. (ctype.h) 3. (errno.h) 4. (fenv.h) 5. (float.h) 6.(inttypes.h) 7. (iso646.h) 8.(limits.h)
9. (locale.h) 10. (math.h) 11. (setjmp.h) 12. (signal.h) 13. (stdarg.h) 14. (stdbool.h) 15.(stddef.h) 16. (stdint.h) 17.(stdio.h) 18. (stdlib.h) 19. (string.h) 20. (tgmath.h)21. (time.h) 22. (uchar.h) 23.(wchar.h) 24. (wctype.h)
1.(assert.h)
assert.h 定义一个可用作标准调试工具的宏函数: assert 宏功能 评估断言(宏)
2. (ctype.h)
字符处理功能 该标头声明了一组用于分类和转换单个字符的函数。 功能: 这些函数的INT等效一个字符作为参数并返回一个INT,它们可以是另一个字符或表示布尔值的值:一个INT的值0手段假,以及INT从值不同0表示真。 (1)字符分类功能: 他们检查作为参数传递的字符是否属于某个类别: isalnum 检查字符是否为字母数字(函数) isalpha 检查字符是否为字母(函数) isblank 检查字符是否为空白(功能) iscntrl 检查字符是否为控制字符(功能) isdigit 检查字符是否为十进制数字(功能) isgraph 检查字符是否具有图形表示(功能) islower 检查字符是否为小写字母(功能) isprint 检查字符是否可打印(功能) ispunct 检查字符是否为标点符号(函数) isspace 检查字符是否为空格(功能) isupper 检查字符是否为大写字母(功能) isxdigit 检查字符是否为十六进制数字(函数) (2)字符转换功能: 在字母大小写之间转换的两个函数: tolower 将大写字母转换为小写字母(函数) toupper 将小写字母转换为大写字母(函数)
3.(errno.h)
C错误 定义以下宏的C标头: errno: 上一个错误编号(宏) 加上至少三个其他宏常量: 益登, 范围 和 序列号
4.(fenv.h)
浮点环境 该标头声明一组函数和宏以及特定类型,以访问浮点环境。 在浮点环境维持一系列状态标志和具体的控制模式。关于浮点环境的具体内容取决于实现,但是状态标志通常包括浮点异常及其相关信息,并且控制模式至少包括舍入方向。 功能: (1)浮点异常: feclearexcept 清除浮点异常(函数) feraiseexcept 引发浮点异常(函数) fegetexceptflag 获取浮点异常标志(函数) fesetexceptflag 设置浮点异常标志(函数) (2)取整方向: fegetround 获取舍入方向模式(功能) fesetround 设置舍入方向模式(功能) (3)整个环境: fegetenv 获取浮点环境(函数) fesetenv 设置浮点环境(函数) feholdexcept 保留浮点异常(函数) feupdateenv 更新浮点环境(函数) (4)其他: fetestexcept 测试浮点异常(功能) (5)种类: fenv_t 浮点环境类型(type) fexcept_t 浮点异常类型(type) (6)宏常量: <1>浮点异常 FE_DIVBYZERO 磁极错误异常(宏) FE_INEXACT 不精确的结果异常(宏) FE_INVALID 无效的参数异常(宏) FE_OVERFLOW 溢出范围错误异常(宏) FE_UNDERFLOW 下溢范围错误异常(宏) FE_ALL_EXCEPT 所有例外(宏) <2>取整方向 FE_DOWNWARD 向下舍入方向模式(宏) FE_TONEAREST 最接近的舍入方向模式(宏) FE_TOWARDZERO 向零舍入方向模式(宏) FE_UPWARD 向上舍入方向模式(宏) <3>整个环境 FE_DFL_ENV 默认环境(宏) <4>pragma FENV_ACCESS 进入浮点环境(pragma)
5.(float.h)
浮点类型的特征 此标头描述了特定系统和所使用的编译器实现的浮点类型的特征。 浮点数由四个元素组成: 信号:负号或非负号 一个基数(或基数):表示可以用一位数字表示的不同数字(二进制为2,十进制为10,十六进制为16,依此类推...) 有效数字(或尾数):这是上述基数的一系列数字。该系列中的位数是所谓的精度。 指数(也称为特征或小数位数):代表有效位数的偏移量,以下列方式影响该值: 浮点的值 = 有效位数x 基本指数及其对应的符号。 宏常量 以下面板显示了此标头中定义的不同值的名称以及所有实现的最小值或最大值(每个实现可以将这些值设置为大于或小于指定的此最小值或最大值): 当一组宏时存在前缀FLT_, DBL_ 和 LDBL_,以 FLT_适用于该float类型,DBL_到double和一个LDBL_到long double。 兼容性 FLT_EVAL_METHOD 和 DECIMAL_DIG 为符合1999年或以后的C标准(自2011年以来仅包括C ++标准:C ++ 11)的库定义。
6.(inttypes.h)
C整数类型 具有支持基于宽度的整数类型的库的标头。 包括此标头会自动包括<cstdint>(定义基于宽度的整数类型)。
巨集
以下宏扩展为包含 打印 要么 扫描说明符,适用于基于特定宽度的整数类型:
功能
此标头还声明了以下函数,这些函数将 cstdlib和 cwchar 对于 intmax_t:
种类
imaxdiv_t
类型返回 imaxdiv, 哪一个是 div_t 等价于 intmax_t。7.(iso646.h)
ISO 646替代运算符 此标头为ISO646标准字符集不支持的C ++运算符定义了11个宏常量以及其他拼写形式:
在C ++中,保留字与这些宏具有相同的名称,并被视为其各自运算符的别名。因此,包含此标头在C ++中无效,并且对于使用备用名称也没有必要。8.(limits.h)
整数类型的大小 该头文件定义了常量,并限制了所使用的特定系统和编译器实现的基本整数类型。 基本浮点类型的限制在<cfloat>(<float.h>)中定义。 特定于宽度的整数类型和其他typedef类型的限制在<cstdint>(<stdint.h>)中定义。
宏常量
兼容性
LLONG_MIN, LLONG_MAX 和 ULLONG_MAX 为符合1999年或以后的C标准(自2011年以来仅包括C ++标准:C ++ 11)的库定义。9.(locale.h)
C本地化库 C语言支持特定于本地化的设置,例如特定于区域性的日期格式或特定于国家/地区的货币符号。 每个系统和特定的编译器实现都可以提供不同的语言环境选择(使用setlocale函数),但是对于任何C程序,至少有两个语言环境可供选择: 该"C"区域是最小的区域。这是一个相当中性的语言环境,在所有系统和编译器中都具有相同的设置,因此使用此语言环境的程序的确切结果是可以预测的。这是所有C程序默认使用的语言环境。 系统的默认语言环境(由空的C字符串指定:“”)。它是应用程序运行环境所提供的语言环境配置。通常,它包含比“ C”语言环境更多的本地化信息。 此标头声明结构 列夫 和功能 setlocale 和 语言环境,以及要与之配合使用的几个宏。这些用于定义特定于语言环境的信息。 请注意,语言环境配置会影响标准C库中许多功能的行为: 在<cstring>(<string.h>)中,函数Strcoll 和 strxfrm 受角色转换规则的影响。 在<cctype>(<ctype.h>)中,除等轴 和 isxdigit 受所选扩展字符集的影响。 在<cstdio>(<stdio.h>)中,格式化的输入/输出操作受数字格式设置中的字符转换规则和小数点字符集影响。 在<ctime>(<time.h>)中,函数strftime 受时间格式设置的影响。 在此标头中,它影响其函数返回的值 setlocale 和 语言环境。 还向程序提供了一些语言环境信息,以便以对语言环境敏感的方式更好地呈现其输出(语言环境)。 种类 struct lconv 数值格式信息(类型) 功能 setlocale 设置或检索语言环境(函数) localeconv 获取数量的区域设置格式参数(函数)
10.(math.h)
C数字库 标头<cmath>声明了一组函数来计算常见的数学运算和转换: 功能: 三角函数 cos 计算余弦(函数) sin 计算正弦(函数) tan 计算切线(函数) acos 计算反余弦(函数) asin 计算反正弦(函数) atan 计算反正切(函数) atan2 用两个参数计算反正切(函数) 双曲函数 cosh 计算双曲余弦(函数) sinh 计算双曲正弦(函数) tanh 计算双曲正切(函数) acosh 计算面积双曲余弦(函数) asinh 计算面积双曲正弦(函数) atanh 计算区域双曲正切(函数) 指数和对数函数 exp 计算指数函数(function) frexp 获取有效和指数(函数) ldexp 从有效数和指数(函数)生成值 log 计算自然对数(函数) log10 计算常用对数(函数) modf 分为小数和整数部分(函数) exp2 计算二进制指数函数(function) expm1 计算指数减一(函数) ilogb 整数二进制对数(函数) log1p 计算对数加一(函数) log2 计算二进制对数(函数) logb 计算浮点基数对数(函数) scalbn 使用浮点基指数来缩放有效位数(函数) scalbln 使用浮点基指数(long)缩放有效位数(函数) power功能: pow 提升功率(功能) sqrt 计算平方根(函数) cbrt 计算立方根(函数) hypot 计算斜边(函数) 误差和伽玛函数: erf 计算误差函数(function) erfc 计算互补误差函数(function) tgamma 计算伽玛函数(function) lgamma 计算对数伽马函数(function) 舍入和余数函数: ceil 舍入值(函数) floor 舍入值(函数) fmod 计算除法的余数(函数) trunc 截断值(函数) round 舍入到最接近(函数) lround 四舍五入到最接近的整数并转换为长整数(函数) llround 四舍五入到最接近的整数并转换为长整型(函数) rint 四舍五入到整数值(函数) lrint 舍入并转换为长整数(函数) llrint 舍入并转换为long long整数(函数) nearbyint 四舍五入到附近的整数值(函数) remainder 计算余数(IEC 60559)(功能) remquo 计算余数和商(函数) 浮点运算功能: copysign 复制标志(功能) nan 生成安静的NaN (函数) nextafter 下一个可表示的值(函数) nexttoward 下一个可表示的值朝向精确值(函数) 最小,最大,差函数: fdim 正差(函数) fmax 最大值(函数) fmin 最小值(函数) 其他功能: fabs 计算绝对值(函数) abs 计算绝对值(函数) fma 乘加(函数) 宏/函数: 这些在C中作为宏实现,在C ++中作为函数实现: 分类宏/功能: fpclassify 分类浮点值(宏/函数) isfinite 是有限值(宏) isinf 是无穷大(宏/功能) isnan 不是数字(宏/函数) isnormal 正常(宏/功能) signbit 符号位(宏/功能) 比较宏/功能: isgreater 更大(宏) isgreaterequal 大于或等于(宏) isless 少(宏) islessequal 小于或等于(宏) islessgreater 小于或大于(宏) isunordered 无序(宏) 宏常量: math_errhandling 错误处理(宏) INFINITY 无限(常数) NAN 非数字(常量) HUGE_VAL 巨大的价值(不变) HUGE_VALF 巨大的浮动价值 HUGE_VALL 巨大的双精度值(常量)
此标头还定义了以下宏常量(自C99 / C ++ 11起):
种类double_t 浮点类型(type) float_t 浮点类型(type)
11.(setjmp.h)
非本地跳 通过此头文件提供的工具,程序员可以通过提供保留跳转环境的方法来跳过正常的函数调用并返回规则。 标头提供一个函数,具有函数形式和特定类型的宏: 功能: longjmp 跳远(功能) 宏功能: setjmp 保存呼叫环境以进行跳远(宏) 种类: jmp_buf 键入以保留信息以恢复调用环境()
12.(signal.h)
C库处理信号 一些正在运行的环境使用信号来通知正在运行的进程某些事件。这些事件可能与程序代码执行的错误(例如错误的算术运算)或异常情况(例如请求中断程序)有关。 信号通常表示程序已被要求终止或发生了不可恢复的错误的情况,因此处理信号可以执行终止前的清除操作或尝试以某种方式从错误中恢复。 在标准C库中设计的情况下,并非所有运行环境都需要生成自动信号,并且某些其他环境不仅会生成这些信号,还会生成更多特定的信号。但无论如何,所有通过调用函数raise显式生成的信号都将传递到其相应的信号处理程序。 功能: signal 将功能设置为处理信号(功能) raise 产生信号(函数) 种类: sig_atomic_t 整体式(type) 宏常量:
13.(stdarg.h)
可变参数处理 该标头定义了宏,以访问未命名参数列表中的各个参数,这些参数的编号和类型对于调用的函数是未知的。 一个函数可以通过在其常规命名参数后加逗号和三个点(,...)来接受数量不等的附加参数而无需相应的参数声明: return_type function_name(parameter_declarations,...); 要访问这些附加参数,可以使用在此标头中声明的宏va_start,va_arg和va_end: <1>首先,va_start将变量参数列表初始化为va_list。 <2>随后执行va_arg会产生附加参数的值,其顺序与传递给函数的顺序相同。 <3>最后,va_end必须在函数返回之前执行。 种类: va_list 键入以保存有关变量参数的信息() 宏功能: va_start 初始化变量参数列表(宏) va_arg 检索下一个参数(宏) va_end 结束使用变量参数列表(宏) va_copy 复制变量参数列表(宏)
14.(stdbool.h)
布尔型 此标头在C中的目的是添加布尔类型以及true和false值作为宏定义。 在直接支持这些类型的C ++中,标头仅包含一个宏,可用于检查是否支持该类型: 宏常量:
15.(stddef.h)
C标准定义 该头定义了某些类型的语言隐式生成或使用的几种类型。 种类: ptrdiff_t 指针减法的结果(类型) size_t 无符号整数类型(type) max_align_t 标量对齐最宽的类型() nullptr_t 空指针类型(C ++)(类型) 在C中,此标头还包括wchar_t类型(宽字符类型)的声明,在C ++中,该声明是一种语言关键字,用于标识不同的基本类型(C ++中不需要标头)。 宏功能: offsetof 返回成员的偏移量(宏) 宏常量: NULL 空指针(宏)
16.(stdint.h)
整数类型 该标头定义了一组具有特定宽度要求的整数类型别名,以及指定其限制的宏和用于创建这些类型的值的宏函数。 种类: 以下是基本整数类型或扩展整数类型的 typedef 。
其中一些typedef可能表示相同的类型。因此,函数重载不应依赖于它们的不同。*请注意,某些类型是可选的(因此,不保证可移植性)。特定的库实现也可以使用其系统支持的其他宽度来定义其他类型。无论如何,如果定义了签名版本或未签名版本,则将同时定义签名和未签名版本。
巨集
(1)cstdint类型限制
其中N是8、16、32、64之一,或库支持的任何其他类型宽度。
仅定义与库支持的类型相对应的宏。(2)其他类型的限制
其他标准整数类型的限制:
(3)类似函数的宏
这些类似于函数的宏扩展为整数常量,适用于初始化上述类型的对象:
例如:
INTMAX_C(2012) // expands to 2012LL or similar17.(stdio.h)
C库执行输入/输出操作 输入和输出操作也可以在下,用来执行++ Ç 圣 ANDAR d 我 NPUT和ö安输出库(cstdio,被称为stdio.h中在C语言)。该库使用所谓的流与物理设备(例如键盘,打印机,终端或系统支持的任何其他类型的文件)一起操作。流是一种以统一方式与之交互的抽象。所有流都具有相似的属性,而与它们所关联的物理介质的各个特征无关。 流在cstdio库中作为指向FILE的指针处理对象。指向FILE对象的指针唯一地标识一个流,并在涉及该流的操作中用作参数。 还存在三个标准流:stdin,stdout和stderr,它们是使用该库为所有程序自动创建和打开的。 (1)流属性: 流具有一些属性,这些属性定义可以在它们上使用哪些函数以及这些函数如何处理通过它们输入或输出的数据。其中的大多数属性是在使用fopen函数将流与文件(打开的文件)关联时定义的: 读/写访问 指定流对它们关联的物理介质是否具有读或写访问权限(或两者都有)。 文字/二进制 文本流被认为代表一组文本行,每个文本行以换行符结束。根据运行应用程序的环境,文本流可能会发生某些字符转换,以使某些特殊字符适应环境的文本文件规范。另一方面,二进制流是在不进行翻译的情况下从物理介质写入或读取的字符序列,与读取或写入该流的字符一一对应。 缓冲 缓冲区是一个内存块,在对数据进行物理读取或写入关联文件或设备之前,先在其中累积数据。流可以完全缓冲,行缓冲或不缓冲。在完全缓冲的流上,当缓冲区已满时,将读取/写入数据;在行缓冲的流上,当遇到换行符时会发生这种情况;而在非缓冲流上,则应尽快读取/写入数据。 取向 打开时,流没有方向。对它们执行输入/输出操作后,它们将变为面向字节的或面向宽的,这取决于所执行的操作(通常,<cstdio>中定义的功能是面向字节的,而<cwchar>中的功能是面向字节的)面向广泛)。有关更多信息,请参见cwchar。 (2)指标: 流具有某些内部指示器,这些指示器指定其当前状态并影响对其执行的某些输入和输出操作的行为: 错误指示 当与流有关的操作中发生错误时,设置此指示器。可以使用ferror函数检查该指示器,并且可以通过调用clearerr,freopen或rewind来重置该指示器。 文件结束指示符 设置时,指示对流执行的最后读取或写入操作已到达文件末尾。可以使用feof函数进行检查,也可以通过调用clearerr或freopen或通过调用任何重新定位函数(rewind,fseek和fsetpos)将其重置。 位置指示器 它是每个流的内部指针,指向下一个I / O操作中要读取或写入的下一个字符。它的值可以通过ftell和fgetpos函数获得,并且可以使用重定位函数rewind,fseek和fsetpos进行更改。 功能: <1> 文件操作: remove 删除文件(功能) rename 重命名文件(功能) tmpfile 打开一个临时文件(函数) tmpnam 生成临时文件名(函数) <2>档案存取: fclose 关闭文件(功能) fflush 冲洗流(功能) fopen 打开文件(功能) freopen 重新打开具有不同文件或模式(功能)的流 Setbuf 设置流缓冲区(函数) setvbuf 更改流缓冲(功能) <3>格式化的输入/输出: fprintf 将格式化的数据写入流(函数) fscanf 从流中读取格式化的数据(函数) printf 将格式化的数据打印到标准输出(功能) scanf 从stdin读取格式化的数据(函数) snprintf 将格式化的输出写到大小缓冲区(函数) sprintf 将格式化的数据写入字符串(函数) sscanf 从字符串读取格式化的数据(函数) vfprintf 将可变参数列表中的格式化数据写入流(函数) vfscanf 将流中的格式化数据读取到变量参数列表(函数)中 vprintf 将格式化的数据从变量参数列表打印到stdout (函数) vscanf 将格式化的数据读入变量参数列表(函数) vsnprintf 将格式化的数据从变量参数列表写入大小已设置的缓冲区(函数) vsprintf 将变量参数列表中的格式化数据写入字符串(函数) vsscanf 将格式化的数据从字符串读入变量参数列表(函数) <4>字符输入/输出: fgetc 从流中获取字符(函数) fgets 从流中获取字符串(函数) fputc 将字符写入流(函数) fputs 将字符串写入流(函数) getc 从流中获取字符(函数) getchar 从stdin获取字符(函数) gets 从stdin获取字符串(函数) putc 将字符写入流(函数) Putchar 将字符写入标准输出(函数) puts 将字符串写入stdout (函数) ungetc 从流中取消字符(功能) <5>直接输入/输出: fread 从流中读取数据块(函数) fwrite 将数据块写入流(函数) <6>文件位置: fgetpos 获取流中的当前位置(函数) fseek 重新定位流位置指示器(功能) fsetpos 设置流的位置指示器(功能) ftell 获取流中的当前位置(函数) rewind 将流的位置设置为开头(函数) <7>错误处理: clearerr 清除错误指示灯(功能) feof 检查文件结束指示器(功能) ferror 检查错误指示灯(功能) perror 打印错误信息(功能) 巨集: BUFSIZ 缓冲区大小(恒定) EOF 文件结束(常量) FILENAME_MAX 文件名的最大长度(常量) FOPEN_MAX 同时开放流的潜在限制(恒定) L_tmpnam 临时文件名的最小长度(常量) NULL 空指针(宏) TMP_MAX 临时文件数(常量) 此外:_IOFBF,_IOLBF,_IONBF(使用setvbuf用来) 和SEEK_CUR,SEEK_END和SEEK_SET(与用于FSEEK)。 种类: FILE 包含控制流的信息的对象(类型) fpos_t 包含指定文件中位置的信息的对象(类型) size_t 无符号整数类型(type)
18.(stdlib.h)
C标准通用工具库 该头定义了几个通用功能,包括动态内存管理,随机数生成,与环境的通信,整数算术,搜索,排序和转换。 功能: (1)字符串转换: atof 将字符串转换为双精度(function) atoi 将字符串转换为整数(函数) Atol 将字符串转换为长整数(函数) atoll 将字符串转换为long long整数(函数) strtod 将字符串转换为双精度(function) strtof 将字符串转换为浮点数(函数) strtol 将字符串转换为长整数(函数) strtold 将字符串转换为long double (function) Strtoll 将字符串转换为long long整数(函数) strtoul 将字符串转换为无符号长整数(函数) strtoull 将字符串转换为无符号long long整数(函数) (2)伪随机序列生成: rand 生成随机数(函数) srand 初始化随机数生成器(函数) (3)动态内存管理: calloc 分配和零初始化数组(函数) free 取消分配内存块(函数) malloc 分配存储块(功能) realloc 重新分配内存块(函数) (4)环境: abort 中止当前过程(功能) atexit 设置要在退出时执行的功能(功能) at_quick_exit 设置要在快速退出时执行的功能(功能) exit 终止调用过程(函数) getenv 获取环境字符串(函数) quick_exit 快速终止呼叫过程(功能) system 执行系统命令(功能) _Exit 终止调用过程(函数) (5)搜索和排序: bsearch 数组中的二进制搜索(函数) qsort 对数组的元素进行排序(函数) (6)整数算术: abs 绝对值(函数) div 积分除法(功能) labs 绝对值(函数) ldiv 积分除法(功能) llabs 绝对值(函数) lldiv 积分除法(功能) (7)多字节字符: mblen 获取多字节字符的长度(函数) mbtowc 将多字节序列转换为宽字符(函数) wctomb 将宽字符转换为多字节序列(函数) (8)多字节字符串: mbstowcs 将多字节字符串转换为宽字符字符串(函数) wcstombs 将宽字符字符串转换为多字节字符串(函数) 宏常量: EXIT_FAILURE 故障终止代码(宏) EXIT_SUCCESS 成功终止代码(宏) MB_CUR_MAX 多字节字符的最大大小(宏) NULL 空指针(宏) RAND_MAX rand返回的最大值(宏) 种类: div_t div返回的结构(类型) ldiv_t ldiv返回的结构(类型) lldiv_t lldiv返回的结构(类型) size_t 无符号整数类型(type)
19.(string.h)
C字符串 该头文件定义了几个函数来操纵C字符串和数组。 功能: (1)复制中: Memcpy 复制内存块(功能) memmove 移动内存块(功能) strcpy 复制字符串(函数) strncpy 复制字符串中的字符(函数) (2)串联: strcat 连接字符串(函数) Strncat 附加字符串中的字符(功能) (3)比较: memcmp 比较两个内存块(函数) strcmp 比较两个字符串(函数) Strcoll 使用语言环境比较两个字符串(函数) strncmp 比较两个字符串的字符(函数) strxfrm 使用语言环境转换字符串(函数 (4)搜索: memchr 在内存块中找到字符(功能) strchr 找到字符串中第一个出现的字符(函数) strcspn 获取跨度直到字符串中的字符(函数) strpbrk 找到字符串中的字符(函数) strrchr 找到字符串中最后一次出现的字符(函数) strspn 获取字符串中字符集的范围(函数) strstr 找到子字符串(函数) strtok 将字符串拆分为标记(函数) 其他: memset 填充内存块(功能) strerror 获取错误消息字符串的指针(函数) strlen 获取字符串长度(函数) 巨集: NULL 空指针(宏) 种类: size_t 无符号整数类型(type)
20.(tgmath.h)
此标头定义了与中的函数相对应的宏函数<math.h>,但可以将其他非浮点类型用作参数:该 函数中的每个函数<math.h>至少应将一个double作为参数(模组)被定义<tgmath.h>为具有相同语义但使用通用参数的宏:而是 为这些通用参数提供的每个整数类型的参数都强制转换为double;的参数浮点类型而没有转化中使用(如直接float,double或long double)。 此标头会自动包含<math.h>和<complex.h>:如果类型通用函数存在于该函数中(带有字符前缀),则该类型泛型函数也可以采用复杂值。<complex.h>"c"
21.(time.h)
C时间库 该头文件包含用于获取和操作日期和时间信息的函数的定义。 功能: (1)时间操纵: clock 时钟程序(功能) difftime 两次返回差(函数) mktime 将tm结构转换为time_t (函数) time 获取当前时间(函数) (2)转换次数: asctime 将tm结构转换为字符串(函数) ctime 将time_t值转换为字符串(函数) gmtime 将time_t转换为tm作为UTC时间(函数) localtime 将time_t转换为本地时间(函数) strftime 将时间格式化为字符串(函数) 宏常量: CLOCKS_PER_SEC 每秒时钟滴答声(宏) NULL 空指针(宏) :类型 clock_t 时钟类型(type) size_t 无符号整数类型(type) time_t 时间类型(type) struct tm 时间结构(类型)
22.(uchar.h)
Unicode字符 此标头提供对16位和32位字符的支持,适合使用UTF-16和UTF-32进行编码。 种类: 在C中,此标头定义两个宏:char16_t和char32_t,它们映射到适当大小的无符号整数类型(分别与uint_least16_t和uint_least32_t相同)。 在C ++中,char16_t和char32_t是基本类型(因此,此标头未在C ++中定义此类宏)。 功能 c16rtomb 将16位字符转换为多字节序列(函数) c32rtomb 将32位字符转换为多字节序列(函数) mbrtoc16 将多字节序列转换为16位字符(函数) mbrtoc32 将多字节序列转换为32位字符(函数) 兼容性 此标头由扩展C99的技术报告首次在C中引入,并得到最新的C和C ++标准(均于2011年发布)完全支持。 巨集: 在C ++中,此标头定义了以下宏:
23.(wchar.h)
宽字符 该头文件定义了几个用于C宽字符串的函数。 功能: (1)输入/输出:(大多数为<cstdio>函数的宽版本) fgetwc 从流中获取宽字符(函数) get 从流中获取宽字符串(函数) fputwc 将宽字符写入流(函数) fwide 将宽字符串写入流(函数) fwide 流方向(功能) fwprintf 将格式化的数据写入流(函数) fwscanf 从流中读取格式化的数据(函数) getwc 从流中获取宽字符(函数) getwchar 从stdin获取宽字符(函数) putwc 将宽字符写入流(函数) putwchar 将宽字符写入标准输出(函数) swprintf 将格式化的数据写入宽字符串(函数) swscanf 从字符串读取格式化的数据(函数) ungetwc 从流中删除宽字符(功能) vfwprintf 将可变参数列表中的格式化数据写入流(函数) vfwscanf 将流中的格式化数据读取到变量参数列表(函数)中 vswprintf 将格式化的数据从变量参数列表写入大小已设置的缓冲区(函数) vswscanf 将宽字符串中的格式化数据读入变量参数列表(函数) vwprintf 将格式化的数据从变量参数列表打印到stdout (函数) vwscanf 将格式化的数据读入变量参数列表(函数) wprintf 将格式化的数据打印到标准输出(功能) wscanf 从stdin读取格式化的数据(函数) (2)通用实用程序:(<cstdlib>函数的宽版本) wcstod 将宽字符串转换为双精度(函数) wcstof 将宽字符串转换为浮点数(函数) wcstol 将宽字符串转换为长整数(函数) wcstold 将宽字符串转换为长整数(函数) wcstoll 将宽字符串转换为长整型(函数) wcstoul 将宽字符串转换为无符号长整数(函数) wcstoull 将宽字符串转换为无符号的long long整数(函数) (3) 字符/字符串转换:(主要是<cstdlib>函数的扩展版本) btowc 将单字节字符转换为宽字符(函数) mbrlen 获取多字节字符的长度(函数) mbrtowc 将多字节序列转换为宽字符(函数) mbsinit 检查初始转换状态(功能) mbsrtowcs 将多字节字符串转换为宽字符字符串(函数) wcrtomb 将宽字符转换为多字节序列(函数) wctob 将宽字符转换为单字节(函数) wcsrtombs 将宽字符字符串转换为多字节字符串(函数) (4)字符串:(<cstring>函数的宽版本) wcscat 连接宽字符串(函数) wcschr 在宽字符串中找到第一个出现的字符(函数) wcscmp 比较两个字符串(函数) wcscoll 使用语言环境比较两个宽字符串(函数) wcscpy 复制宽字符串(函数) wcscspn 获取跨度直到宽字符串中的字符(函数) wcslen 获得宽的字符串长度(函数) wcsncat 附加宽字符串中的字符(功能) wcsncmp 比较两个宽字符串的字符(函数) wcsncpy 复制宽字符串中的字符(功能) wcspbrk 查找宽字符串中的字符(功能) wcsrchr 在宽字符串中找到最后出现的字符(函数) wcsspn 获取宽字符串中字符集的范围(函数) wcsstr 找到宽字符串的子字符串(函数) wcstok 将宽字符串拆分为标记(函数) wcsxfrm 使用语言环境转换宽字符串(函数) wmemchr 在宽字符块中查找字符(函数) wmemcmp 比较两个宽字符块(功能) wmemcpy 复制宽字符块(功能) wmemmove 移动宽字符块(功能) wmemset 填充宽字符数组(函数) (5)时间:(<ctime>函数的宽泛版本) wcsftime 将时间格式化为宽字符串(函数) 种类: mbstate_t 多字节转换状态(类型) size_t 无符号整数类型(type) struct tm 时间结构(类型) wchar_t 宽字符(类型) wint_t 宽int型(type) 宏常量: NULL 空指针(宏) WCHAR_MAX wchar_t的最大值(常量) WCHAR_MIN wchar_t的最小值(常量) WEOF 宽文件结尾(常量)
24.(wctype.h)
宽字符类型 此标头声明了一组用于分类和转换单个宽字符的函数。 有关如何使用“ C”语言环境对标准ASCII字符集进行分类的更多信息,请参见<cctype>。 功能: (1)字符分类功能 他们检查作为参数传递的字符是否属于某个类别: Iswalnum 检查宽字符是否为字母数字(函数) iswalpha 检查宽字符是否为字母(功能) iswblank 检查宽字符是否为空白(功能) iswcntrl 检查宽字符是否为控制字符(功能) iswdigit 检查宽字符是否为十进制数字(功能) iswgraph 检查宽字符是否具有图形表示(功能) iswlower 检查宽字符是否为小写字母(功能) iswprint 检查是否可以打印宽字符(功能) iswpunct 检查宽字符是否为标点字符(功能) iswspace 检查宽字符是否为空格(功能) iswupper 检查宽字符是否为大写字母(功能) iswxdigit 检查宽字符是否为十六进制数字(函数) (2)字符转换功能 在字母大小写之间转换的两个函数: towlower 将大写的宽字符转换为小写(函数) towupper 将小写的宽字符转换为大写(函数) (3)可扩展的分类/转换功能 iswctype 检查宽字符是否具有属性(功能) towctrans 使用转换进行转换(函数) wctrans 返回字符转换(函数) wctype 返回字符属性(函数) 种类: wctrans_t 宽字符转换(类型) wctype_t 宽字符类型(type) wint_t 宽字符整数型(type) 常数: WEOF 宽文件结尾(常量)
- (assert.h) 2. (ctype.h) 3. (errno.h) 4. (fenv.h) 5. (float.h) 6.(inttypes.h) 7. (iso646.h) 8.(limits.h)
-
C语言 学习笔记—标准库
2021-11-04 17:02:26C语言学习——标准库C 标准库 - < assert.h >C 标准库 - < ctype.h >C 标准库 - < errno.h >C 标准库 - < float.h >C 标准库 - < limits.h >C 标准库 - < locale.h >C 标准库 -...C语言学习——标准库
C 标准库 - < assert.h >
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:
#define assert(ignore) ((void)0)
库宏
下面列出了头文件 assert.h 中定义的唯一的函数:
序号 函数 & 描述 1 void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 C 标准库 - < ctype.h >
C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。
这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符。
如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。
库函数
下面列出了头文件 ctype.h 中定义的函数:
序号 函数 & 描述 1 int isalnum(int c) 该函数检查所传的字符是否是字母和数字。 2 int isalpha(int c) 该函数检查所传的字符是否是字母。 3 int iscntrl(int c) 该函数检查所传的字符是否是控制字符。 4 int isdigit(int c) 该函数检查所传的字符是否是十进制数字。 5 int isgraph(int c) 该函数检查所传的字符是否有图形表示法。 6 int islower(int c) 该函数检查所传的字符是否是小写字母。 7 int isprint(int c) 该函数检查所传的字符是否是可打印的。 8 int ispunct(int c) 该函数检查所传的字符是否是标点符号字符。 9 int isspace(int c) 该函数检查所传的字符是否是空白字符。 10 int isupper(int c) 该函数检查所传的字符是否是大写字母。 11 int isxdigit(int c) 该函数检查所传的字符是否是十六进制数字。 标准库还包含了两个转换函数,它们接受并返回一个 “int”
序号 函数 & 描述 1 int tolower(int c) 该函数把大写字母转换为小写字母。 2 int toupper(int c) 该函数把小写字母转换为大写字母。 C 标准库 - < errno.h >
C 标准库的 errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。
在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。
errno.h 头文件定义了一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数常量表达式。
库宏
下面列出了头文件 errno.h 中定义的宏:
序号 宏 & 描述 1 extern int errno 这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。 2 EDOM Domain Error 这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。 3 ERANGE Range Error 这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。 C 标准库 - < float.h >
C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的:
组件 组件描述 S 符号 ( +/- ) b 指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等… e 指数,一个介于最小值 emin 和最大值 emax 之间的整数。 p 精度,基数 b 的有效位数 基于以上 4 个组成部分,一个浮点数的值如下:
floating-point = ( S ) p x b^e
或
floating-point = (+/-) precision x base^exponent
库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 float,DBL 是指类型 double,LDBL 是指类型 long double。
宏 描述 FLT_ROUNDS 定义浮点加法的舍入模式,它可以是下列任何一个值:-1 - 无法确定0 - 趋向于零1 - 去最近的值2 - 趋向于正无穷3 - 趋向于负无穷 FLT_RADIX 2 这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。 FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG 这些宏定义了 FLT_RADIX 基数中的位数。 FLT_DIG 6DBL_DIG 10LDBL_DIG 10 这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。 FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP 这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。 FLT_MIN_10_EXP -37DBL_MIN_10_EXP -37LDBL_MIN_10_EXP -37 这些宏定义了基数为 10 时的指数的最小负整数值。 FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP 这些宏定义了基数为 FLT_RADIX 时的指数的最大整数值。 FLT_MAX_10_EXP +37DBL_MAX_10_EXP +37LDBL_MAX_10_EXP +37 这些宏定义了基数为 10 时的指数的最大整数值。 FLT_MAX 1E+37DBL_MAX 1E+37LDBL_MAX 1E+37 这些宏定义最大的有限浮点值。 FLT_EPSILON 1E-5DBL_EPSILON 1E-9LDBL_EPSILON 1E-9 这些宏定义了可表示的最小有效数字。 FLT_MIN 1E-37DBL_MIN 1E-37LDBL_MIN 1E-37 这些宏定义了最小的浮点值。 C 标准库 - < limits.h >
limits.h 头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。
这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是 255。
库宏
下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。
宏 值 描述 CHAR_BIT 8 定义一个字节的比特数。 SCHAR_MIN -128 定义一个有符号字符的最小值。 SCHAR_MAX 127 定义一个有符号字符的最大值。 UCHAR_MAX 255 定义一个无符号字符的最大值。 CHAR_MIN 0 定义类型 char 的最小值,如果 char 表示负值,则它的值等于 SCHAR_MIN,否则等于 0。 CHAR_MAX 127 定义类型 char 的最大值,如果 char 表示负值,则它的值等于 SCHAR_MAX,否则等于 UCHAR_MAX。 MB_LEN_MAX 1 定义多字节字符中的最大字节数。 SHRT_MIN -32768 定义一个短整型的最小值。 SHRT_MAX +32767 定义一个短整型的最大值。 USHRT_MAX 65535 定义一个无符号短整型的最大值。 INT_MIN -32768 定义一个整型的最小值。 INT_MAX +32767 定义一个整型的最大值。 UINT_MAX 65535 定义一个无符号整型的最大值。 LONG_MIN -2147483648 定义一个长整型的最小值。 LONG_MAX +2147483647 定义一个长整型的最大值。 ULONG_MAX 4294967295 定义一个无符号长整型的最大值。 C 标准库 - < 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) 设置或读取地域化信息。 C 标准库 - < 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 的余数。 C 标准库 - < 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() 生成的。 C 标准库 - < 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 宏兼容。 C 标准库 - < 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,则结果为未定义。 C 标准库 - < 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 中给定的。 C 标准库 - < stdio.h >
stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。
库变量下面是头文件 stdio.h 中定义的变量类型:
序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 2 FILE 这是一个适合存储文件流信息的对象类型。 3 fpos_t 这是一个适合存储文件中任何位置的对象类型。 库宏
下面是头文件 stdio.h 中定义的宏:
序号 宏 & 描述 1 NULL 这个宏是一个空指针常量的值。 2 _IOFBF、_IOLBF 和 _IONBF 这些宏扩展了带有特定值的整型常量表达式,并适用于 setvbuf 函数的第三个参数。 3 BUFSIZ 这个宏是一个整数,该整数代表了 setbuf 函数使用的缓冲区大小。 4 EOF 这个宏是一个表示已经到达文件结束的负整数。 5 FOPEN_MAX 这个宏是一个整数,该整数代表了系统可以同时打开的文件数量。 6 FILENAME_MAX 这个宏是一个整数,该整数代表了字符数组可以存储的文件名的最大长度。如果实现没有任何限制,则该值应为推荐的最大值。 7 L_tmpnam 这个宏是一个整数,该整数代表了字符数组可以存储的由 tmpnam 函数创建的临时文件名的最大长度。 8 SEEK_CUR、SEEK_END 和 SEEK_SET 这些宏是在 fseek 函数中使用,用于在一个文件中定位不同的位置。 9 TMP_MAX 这个宏是 tmpnam 函数可生成的独特文件名的最大数量。 10 stderr、stdin 和 stdout 这些宏是指向 FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流。 库函数
下面是头文件 stdio.h 中定义的函数:
序号 函数 & 描述 1 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。 2 void clearerr(FILE *stream) 清除给定流 stream 的文件结束和错误标识符。 3 int feof(FILE *stream) 测试给定流 stream 的文件结束标识符。 4 int ferror(FILE *stream) 测试给定流 stream 的错误标识符。 5 int fflush(FILE *stream) 刷新流 stream 的输出缓冲区。 6 int fgetpos(FILE *stream, fpos_t *pos) 获取流 stream 的当前文件位置,并把它写入到 pos。 7 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。 8 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。 9 FILE *freopen(const char *filename, const char *mode, FILE *stream) 把一个新的文件名 filename 与给定的打开的流 stream 关联,同时关闭流中的旧文件。 10 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。 11 int fsetpos(FILE *stream, const fpos_t *pos) 设置给定流 stream 的文件位置为给定的位置。参数 pos 是由函数 fgetpos 给定的位置。 12 long int ftell(FILE *stream) 返回给定流 stream 的当前文件位置。 13 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。 14 int remove(const char *filename) 删除给定的文件名 filename,以便它不再被访问。 15 int rename(const char *old_filename, const char *new_filename) 把 old_filename 所指向的文件名改为 new_filename。 16 void rewind(FILE *stream) 设置文件位置为给定流 stream 的文件的开头。 17 void setbuf(FILE *stream, char *buffer) 定义流 stream 应如何缓冲。 18 int setvbuf(FILE *stream, char *buffer, int mode, size_t size)另一个定义流 stream 应如何缓冲的函数。 19 FILE *tmpfile(void) 以二进制更新模式(wb+)创建临时文件。 20 char *tmpnam(char *str) 生成并返回一个有效的临时文件名,该文件名之前是不存在的。 21 int fprintf(FILE *stream, const char *format, …) 发送格式化输出到流 stream 中。 22 int printf(const char *format, …) 发送格式化输出到标准输出 stdout。 23 int sprintf(char *str, const char *format, …) 发送格式化输出到字符串。 24 int vfprintf(FILE *stream, const char *format, va_list arg) 使用参数列表发送格式化输出到流 stream 中。 25 int vprintf(const char *format, va_list arg) 使用参数列表发送格式化输出到标准输出 stdout。 26 int vsprintf(char *str, const char *format, va_list arg) 使用参数列表发送格式化输出到字符串。 27 int fscanf(FILE *stream, const char *format, …) 从流 stream 读取格式化输入。 28 int scanf(const char *format, …) 从标准输入 stdin 读取格式化输入。 29 int sscanf(const char *str, const char *format, …) 从字符串读取格式化输入。 30 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 31 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 32 int fputc(int char, FILE *stream) 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 33 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。 34 int getc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 35 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。 36 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 37 int putc(int char, FILE *stream) 把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。 38 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。 39 int puts(const char *str) 把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。换行符会被追加到输出中。 40 int ungetc(int char, FILE *stream) 把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。 41 void perror(const char *str) 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。 C 标准库 - < stdlib.h >
stdlib .h 头文件定义了四个变量类型、一些宏和各种通用工具函数。
库变量下面是头文件 stdlib.h 中定义的变量类型:
序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 2 wchar_t 这是一个宽字符常量大小的整数类型。 3 div_t 这是 div 函数返回的结构。 4 ldiv_t 这是 ldiv 函数返回的结构。 库宏
下面是头文件 stdlib.h 中定义的宏:
序号 宏 & 描述 1 NULL 这个宏是一个空指针常量的值。 2 EXIT_FAILURE 这是 exit 函数失败时要返回的值。 3 EXIT_SUCCESS 这是 exit 函数成功时要返回的值。 4 RAND_MAX 这个宏是 rand 函数返回的最大值。 5 MB_CUR_MAX 这个宏表示在多字节字符集中的最大字符数,不能大于 MB_LEN_MAX。 库函数
下面是头文件 stdlib.h 中定义的函数:
序号 函数 & 描述 1 double atof(const char *str) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。 2 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。 3 long int atol(const char *str) 把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。 4 double strtod(const char str, char *endptr) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。 5 long int strtol(const char str, char *endptr, int base) 把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。 6 unsigned long int strtoul(const char str, char *endptr, int base) 把参数 str 所指向的字符串转换为一个无符号长整数(类型为 unsigned long int 型)。 7 void *calloc(size_t nitems, size_t size) 分配所需的内存空间,并返回一个指向它的指针。 8 void free(void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。 9 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。 10 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。 11 void abort(void) 使一个异常程序终止。 12 int atexit(void (*func)(void)) 当程序正常终止时,调用指定的函数 func。 13 void exit(int status) 使程序正常终止。 14 char *getenv(const char *name) 搜索 name 所指向的环境字符串,并返回相关的值给字符串。 15 int system(const char *string) 由 string 指定的命令传给要被命令处理器执行的主机环境。 16 void bsearch(const void *key, const void *base, size_t nitems, size_t size, int (compar)(const void *, const void *)) 执行二分查找。 17 void qsort(void base, size_t nitems, size_t size, int (*compar)(const void *, const void)) 数组排序。 18 int abs(int x) 返回 x 的绝对值。 19 div_t div(int numer, int denom) 分子除以分母。 20 long int labs(long int x) 返回 x 的绝对值。 21 ldiv_t ldiv(long int numer, long int denom) 分子除以分母。 22 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 23 void srand(unsigned int seed) 该函数播种由函数 rand 使用的随机数发生器。 24 int mblen(const char *str, size_t n) 返回参数 str 所指向的多字节字符的长度。 25 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) 把参数 str 所指向的多字节字符的字符串转换为参数 pwcs 所指向的数组。 26 int mbtowc(whcar_t *pwc, const char *str, size_t n) 检查参数 str 所指向的多字节字符。 27 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) 把数组 pwcs 中存储的编码转换为多字节字符,并把它们存储在字符串 str 中。 28 int wctomb(char *str, wchar_t wchar) 检查对应于参数 wchar 所给出的多字节字符的编码。 C 标准库 - < string.h >
string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
库变量下面是头文件 string.h 中定义的变量类型:
序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 库宏
下面是头文件 string.h 中定义的宏:
序号 宏 & 描述 1 NULL 这个宏是一个空指针常量的值。 库函数
下面是头文件 string.h 中定义的函数:
序号 函数 & 描述 1 void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 2 int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。 3 void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。 4 void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。 5 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 6 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 7 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 8 char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。 9 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 10 int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。 11 int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。 12 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 13 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 14 size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 15 char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。 16 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 17 char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。 18 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 19 size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。 20 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 21 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。 22 size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。 C 标准库 - < time.h >
time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。
库变量下面是头文件 time.h 中定义的变量类型:
序号 变量 & 描述 1 size_t 是无符号整数类型,它是 sizeof 关键字的结果。 2 clock_t 这是一个适合存储处理器时间的类型。 3 time_t is 这是一个适合存储日历时间类型。 4 struct tm 这是一个用来保存时间和日期的结构。 tm 结构的定义如下:
struct tm { int tm_sec; /* 秒,范围从 0 到 59 */ int tm_min; /* 分,范围从 0 到 59 */ int tm_hour; /* 小时,范围从 0 到 23 */ int tm_mday; /* 一月中的第几天,范围从 1 到 31 */ int tm_mon; /* 月,范围从 0 到 11 */ int tm_year; /* 自 1900 年起的年数 */ int tm_wday; /* 一周中的第几天,范围从 0 到 6 */ int tm_yday; /* 一年中的第几天,范围从 0 到 365 */ int tm_isdst; /* 夏令时 */ };
库宏
下面是头文件 time.h 中定义的宏:
序号 宏 & 描述 1 NULL 这个宏是一个空指针常量的值。 2 CLOCKS_PER_SEC 这个宏表示每秒的处理器时钟个数。 库函数
下面是头文件 time.h 中定义的函数:
序号 函数 & 描述 1 char *asctime(const struct tm *timeptr) 返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。 2 clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。 3 char *ctime(const time_t *timer) 返回一个表示当地时间的字符串,当地时间是基于参数 timer。 4 double difftime(time_t time1, time_t time2) 返回 time1 和 time2 之间相差的秒数 (time1-time2)。 5 struct tm *gmtime(const time_t *timer) timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。 6 struct tm *localtime(const time_t *timer) timer 的值被分解为 tm 结构,并用本地时区表示。 7 time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。 8 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。 9 time_t time(time_t *timer) 计算当前日历时间,并把它编码成 time_t 格式。 学习参考资料:
https://www.nowcoder.com/tutorial/10002/5a9c8f0d446a46b6b0463e2aa6ddbe4e
-
【C语言】c语言基础知识梳理(超全)
2020-04-08 18:27:10C语言知识梳理零、概述一、变量和基本类型(一)基本类型(二)变量(三)复合类型(四)const限定符(五)字符串二、表达式三、语句四、函数五、指针六、.h文件声明以及编译预处理指令 零、概述 写此篇博客的... -
【笔记整理 - C语言基础】
2021-09-23 13:39:48可以将字符集理解成一个很大的表格,它列出了所有字符和二进制的对应关系,计算机显示文字或者存储文字,就是一个查表的过程。 ASCII :American Standard Code for Information Interchange,美国信息交换标准代码 ... -
C语言标准函数库
2014-06-13 01:19:30http://blog.csdn.net/pipisorry/article/details/30398049C语言标准头 断言 字符类测试 (部分)库函数抛出的错误代码 浮点数运算 检测整型数据类型值范围 本土化 数学函数 “非局部跳转” 信号 可变参数列表 一些... -
r语言取绝对值最大的数不带绝对值_【C语言】数据储存 — 数据类型 —— 类型转换!...
2020-11-21 09:51:03C语言根据需要,抽象出了一些基本数据类型和衍生数据类型。这些可以满足大部分需求,更复杂的抽象数据类型亦可通过它们来组成。1. 数据存储 计算机存储的最小单位是bit,它表示0或1。而计算机可寻址的最小单位是byte... -
C语言编程之格式化输出函数printf()说明
2020-11-26 09:16:44如果用了l标志,把wint_t参数转为包含两个元素的wchart_t数组,其中第一个元素包含要输出的字符,第二个元素为null宽字符。 p void *型 a, A double型的16进制表示,"[−]0xh.hhhh p±d"。其中指数部分为10进制... -
C语言学习总结(五)——C库函数总结
2016-12-26 18:22:09wchar_t 。 div_t 是结构体类型 作为 div 函数的返回类型 ldiv_t 是一个结构类型,是函数 ldiv 的返回值类型。 定义了六类函数: 字符串函数 double atof(const char *nptr); 将字符串转换成浮点... -
C语言有哪些鲜为人知的特性?
2021-05-23 08:20:27它会返回一个类型,叫做wint_t 可以表示所有无效wchar_t 类型,包括WEOF,来表示到达文件末尾。 Michal Fori?ek 下面这段C程序可以准确的打印2的747次方而不产生误差。这是为什么呢? 程序: #include #include int ... -
vfprintf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
2021-04-30 04:01:05每个转换规范具有以下格式:介绍%字符(可选)一个或多个标志,用于修改转换的行为: - :转换结果在字段内左对齐(默认情况下,它是右对齐的)+ :带符号转换的符号总是作为转换结果的前缀(默认情况下,只有当结果为负... -
c语言头文件
2019-12-20 16:25:52wchar_t 宽字符常量大小的整数类型 NULL offsetof(type, member-designator) <stdio.h> 文件读写 FILE、fpos_t … 通用工具函数 RAND_MAX rand 函数返回的最大值 MB_CUR_MAX 多字节字符集中的最大字符数 ... -
vprintf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
2021-04-12 22:33:48每个转换规范具有以下格式:介绍%字符(可选)一个或多个标志,用于修改转换的行为: - :转换结果在字段内左对齐(默认情况下,它是右对齐的)+ :带符号转换的符号总是作为转换结果的前缀(默认情况下,只有当结果为负... -
C语言标准库函数
2014-10-20 11:07:06C语言标准头 断言 字符类测试 (部分)库函数抛出的错误代码 浮点数运算 检测整型数据类型值范围 本土化 数学函数 “非局部跳转” 信号 可变参数列表 一些常数,类型和变量 输入和输出 ... -
printf 函数转换说明完整格式详解
2021-04-05 13:22:30如果存在 l 长度修饰符,则对 wint_t 实参进行转换,就像使用 ls 转换说明进行转换一样且没有精度,而实参指向含两个元素的 wchar_t 数组的初始元素。第一个元素包含 lc 转换说明的 wint_t 实参,第二个元素是空宽... -
Standard C语言标准函数库速查 (Cheat Sheet)
2016-02-01 00:00:00定义浮点型数值四舍五入的方式,-1是不确定,0是向0,1是向最近,2是向正无穷大,3是负无穷大 FLT_RADIX 2 定义指数的基本表示(比如base-2是二进制,base-10是十进制表示法,16是十六进制)... -
C语言参考手册
2013-12-15 19:24:27定义浮点型数值四舍五入的方式,-1是不确定,0是向0,1是向最近,2是向正无穷大,3是负无穷大 FLT_RADIX 2 定义指数的基本表示(比如base-2是二进制,base-10是十进制表示法,16是十六进制) FLT_MANT_DIG,DBL_MANT... -
C语言有哪些鲜为人知的特性?及C语言未定义行为一览
2016-03-06 22:06:20wchar_t 。它会返回一个类型,叫做 wint_t 可以表示所有无效 wchar_t 类型,包括 WEOF ,来表示到达文件末尾。 Michal Forišek 下面这段C程序可以准确的打印2的747次方而不产生误差。这是为什么呢?... -
C/C++基础知识
2018-05-14 15:04:58time_t t = time(0); //产生“YYYY-MM-DD hh:mm:ss”格式的字符串。 char s[32]; strftime(s, sizeof(s), “%Y-%m-%d %H:%M:%S”, localtime(&t)); sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC... -
Arithmetic types
2021-05-21 12:41:11(另请参阅类型系统概述的类型以及由C库提供的与类型相关的实用程序的列表)。_Bool (也可以作为宏布尔) - 类型,能够保存两个值之一:1和0(也可以通过宏来...(since C99)字符类型signed char - 输入有符号字符表示... -
c标准库总结
2019-03-14 10:28:54学习c语言十几年了,却从来没有完整的将c标准库看一看,我想在这一点上我是欠缺的。作为一个技术人员,无论什么时候都不能忘记自己最擅长的技能,这次借一个偶然的契机,翻一翻c标准库,希望以后自己在技术上越来越... -
C\C++ Java Python的基本数据类型
2020-07-12 17:09:26char、wchar_t类型 C++中的char类型与C相似,可以参照C语言部分。需要再次说明的是,char类型也可以用来表示较小的整数,用signed char表示有符号整数,而unsigned char表示无符号整数。 除了char类型以外,还有一...