一、C标准函数库
:诊断
中只定义了一个带参的宏assert,其定义形式如下:
void assert (int 表达式)
assert宏用于为程序增加诊断功能,它可以测试一个条件并可能使程序终止。在执行语句:
assert(表达式);
时,如果表达式为0,则在终端显示一条信息:
Assertion failed: 0, file 源文件名, line 行号 Abnormal program termination
然后调用abort终止程序的执行。 在中,带参宏assert是被定义为条件编译的,如果在源文件中定义了宏NDEBUG,则即使包含了头文件,assert宏也将被忽略。
在头文件
函数定义 int isalnum(int c) int isalpha(int c) int isascii(int c) int iscntrl(int c) int isdigit(int c) int isgraph(int c) int islower(int c) int isprint(int c) int ispunct(int c) int isspace(int c) int isupper(int c) int isxdigit(int c) int toupper(int c) int tolower(int c) 函数功能简介 检查字符是否是字母或数字 检查字符是否是字母 检查字符是否是ASCII码 检查字符是否是控制字符 检查字符是否是数字字符 检查字符是否是可打印字符 检查字符是否是小写字母 检查字符是否是可打印字符 检查字符是否是标点字符 检查字符是否是空格符 检查字符是否是大写字母 检查字符是否是十六进制数字字符 将小写字母转换为大写字母 将大写字母转换为小写字母
有关
它表示数学领域错误的错误代码。 2、 ERANGE
它表示结果超出范围的错误代码。 3、 errno
这是一个变量,该值被设置成用来指出系统调用的错误类型。
在头文件
字符常量 CHAR_BIT CHAR_MAX CHAR_MIN INT_MIN INT_MAX LONG_MAX LONG_MIN SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX 取值 8 255或127 0或-127 -32767 32767 2147483647 -2147483647 127 -127 32767 -32767 255 65535 4294967295 65535 含义 char类型的位数 char类型最大值 char类型最小值 int类型最小值 int类型最大值 long类型最大值 long类型最小值 signed char 类型最大值 signed char 类型最小值 short类型的最大值 short类型的最小值 unsigned char 类型最大值 unsigned int 类型最大值 unsigned long 类型最大值 unsigned short类型的最大值
在
LC_ALL:传递给setlocale的第一个参数,指定要更改该locale的哪个方面。 LC_COLLATE:strcoll和strxfrm的行为。 LC_CTYPE:字符处理函数。
LC_MONETARY:localeconv返回的货币信息。
LC_NUMERIC:localeconv返回的小数点和货币信息。 LC_TIME:strftime的行为。
以上扩展成具有唯一取值的整型常数表达式,可作为setlocale的第一个参数。 NULL:由实现环境定义的空指针。
2、struct lconv结构
该结构用于存储和表示当前locale的设置。其结构定义如下:
struct lconv {
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; };
3、函数
struct Iconv *localeconv(void);
函数localeconv将一个struct Iconv类型的对象的数据成员设置成为按照当前地域环境的有关规则进行数量格式化后的相应值。
char *setlocale(int category,char * locale);
函数setlocale用于更改和查询程序的整个当前地域环境或部分设置。地域环境变量由参数category(上面定义的6个常量)和locale指定。
在
函数定义 double exp(double x); double log(double x) double log10(double x); double pow(double x, double y); double sqrt(double x); double ceil(double x); double floor(double x); double fabs(double x); double ldexp(double x, int n); 函数功能简介 指数运算函数,求e的x次幂函数 对数函数ln(x) 对数函数log 指数函数(x的y次方) 计算平方根函数 向上舍入函数 向下舍入函数 求浮点数的绝对值 装载浮点数函数 double frexp(double x, int* exp); double modf(double x, double* ip); double fmod(double x, double y); double sin(double x); double cos(double x); double tan(double x); double asin(double x); double acos(double x); double atan(double x); double atan2(double y, double x); double sinh(double x); double cosh(double x); double tanh(double x);
分解浮点数函数 分解双精度数函数 求模函数 计算x的正弦值函数 计算x的余弦值函数 计算x的正切值函数 计算x的反正弦函数 计算x的反余弦函数 反正切函数1 反正切函数2 计算x的双曲正弦值 计算x的双曲余弦值 计算x的双曲正切值 在标准库中,还有一些与数学计算有关的函数定义在其他头文件中。
在头文件
int setjmp(jmp_buf env); /*设置调转点*/
和
longjmp(jmp_buf jmpb, int retval); /*跳转*/
宏setjmp的功能是将当前程序的状态保存在结构env ,为调用宏longjmp设置一个跳转点。setjmp将当前信息保存在env中供longjmp使用。其中env是jmp_buf结构类型的,该结构定义为:
typedef struct { unsigned j_sp; unsigned j_ss; unsigned j_flag; unsigned j_cs; unsigned j_ip; unsigned j_bp; unsigned j_di; unsigned j_es; unsigned j_si; unsigned j_ds; } jmp_buf[1];
直接调用setjmp时,返回值为0,这一般用于初始化(设置跳转点时)。以后再调用longjmp宏时用env变量进行跳转。程序会自动跳转到setjmp宏的返回语句处,此时setjmp的返回值为非0,由longjmp的第二个参数指定。
下面通过例子来理解
#include
jmp_buf env; /*定义jmp_buf类型变量*/
int main(void) {
int value;
value = setjmp(env); /*调用setjmp,为longjmp设置跳转点*/ if (value != 0) {
printf(\ exit(value); /*退出程序*/
}
printf(\ ... \\n\
longjmp(env,1); /*跳转到setjmp语句处*/ return 0; }
本例程先应用setjmp宏为longjmp设置跳转点,当第一次调用setjmp时返回值为0,并将程序的当前状态(寄存器的相关状态)保存在结构变量env中。当程序执行到longjmp时,系统会根据setjmp保存下来的状态env跳转到setjmp语句处,并根据longjmp的第二个参数设置此时setjmp的返回值。
本例程的运行结果为:
Jump ...
Longjmp with value 1
一般地,宏setjmp和longjmp是成对使用的,这样程序流程可以从一个深层嵌套的函数中返回。
头文件
在
int signal(int sig, sigfun fname);
和
int raise(int sig);
signal函数的作用是设置某一信号的对应动作。其中参数sig用来指定哪一个信号被设置处理函数。在标准C 中支持的信号如下表。
标准C支持的信号
取值 SIGABRT SIGPPE SIGILL SIGINT SIGSEGV SIGTERM
说明 异常中止 算术运算错误 非法硬件指令 终端中断 无效的内存访问 中止信号 默认执行动作 中止程序 中止程序 中止程序 中止程序 中止程序 中止程序 使用的操作系统 UNIX DOS UNIX DOS UNIX DOS UNIX DOS UNIX DOS UNIX DOS 参数fname是一个指向函数的指针,当sig的信号发生时程序会自动中断转而执行fname
指向的函数。执行完毕再返回断点继续执行程序。系统提供了两个常量函数指针,可以作为函数的参数传递。它们分别是:
SIG_DEF:执行默认的系统第一的函数。