没有合适的资源?快使用搜索试试~ 我知道了~
C语言 标准函数库 详解
5星 · 超过95%的资源 需积分: 9 20 下载量 141 浏览量
2012-03-20
11:52:44
上传
评论 4
收藏 1.02MB PDF 举报
温馨提示
试读
108页
包含C语言的各种标准函数库,并附有详细使用说明,可以做函数参考手册,提高编程效率。
资源推荐
资源详情
资源评论
c语言函数库
第一章(C标准库)
1. <assert.h>:诊断 1
2. <ctype.h>:字符类别测试 1
3. <errno.h>:错误处理 2
4. <limits.h>:整型常量 2
5. <locale.h>:地域环境 3
6. <math.h>:数学函数 3
7. <setjmp.h>:非局部跳转 4
8. <signal.h>:信号 5
9. <stdarg.h>:可变参数表 6
10. <stddef.h>:公共定义 7
11. <stdio.h>:输入输出 7
12. <stdlib.h>:实用函数 8
13. <time.h>:日期与时间函数 9
<assert.h>:诊断
<assert.h>中只定义了一个带参的宏assert,其定义形式如下:
void assert (int 表达式)
assert宏用于为程序增加诊断功能,它可以测试一个条件并可能使程序终止。在执行语
句:
assert(表达式);
时,如果表达式为0,则在终端显示一条信息:
Assertion failed: 0, file 源文件名, line 行号
Abnormal program termination
然后调用abort终止程序的执行。
在<assert.h>中,带参宏assert是被定义为条件编译的,如果在源文件中定义了宏
NDEBUG,则即使包含了头文件<assert.h>,assert宏也将被忽略。
<ctype.h>:字符类别测试
在头文件<ctype.h>中定义了一些测试字符的函数。 在这些函数中, 每个函数的参数都是
整型int,而每个参数的值或者为EOF,或者为char类型的字符。<ctype.h>中定义的标准函
数列表如下:
<ctype.h>中定义的函数
函数定义 函数功能简介
int isalnum(int c)
检查字符是否是字母或数字
int isalpha(int c)
检查字符是否是字母
int isascii(int c)
检查字符是否是ASCII码
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)
将大写字母转换为小写字母
有关<ctype.h>中定义的这些标准函数以及一些常用的非标准字符处理函数将在第十一
章中进行详细地介绍。
<errno.h>:错误处理
<errno.h>中定义了两个常量,一个变量。
1、 EDOM
它表示数学领域错误的错误代码。
2、 ERANGE
它表示结果超出范围的错误代码。
3、 errno
这是一个变量,该值被设置成用来指出系统调用的错误类型。
<limits.h>:整型常量
在头文件<limits.h>中定义了一些表示整型大小的常量。下面给出这些常量的字符表示
以及含义,见下表。
<limits.h>中定义的字符常量
字符常量 取值 含义
CHAR_BIT 8
char类型的位数
CHAR_MAX
255或127 char类型最大值
CHAR_MIN
0或-127 char类型最小值
INT_MIN -32767
int类型最小值
INT_MAX 32767
int类型最大值
LONG_MAX 2147483647
long类型最大值
LONG_MIN -2147483647
long类型最小值
SCHAR_MAX 127
signed char 类型最大值
SCHAR_MIN -127
signed char 类型最小值
SHRT_MAX 32767
short类型的最大值
SHRT_MIN -32767
short类型的最小值
UCHAR_MAX 255
unsigned char 类型最大值
UINT_MAX 65535
unsigned int 类型最大值
ULONG_MAX 4294967295
unsigned long 类型最大值
USHRT_MAX 65535
unsigned short类型的最大值
<locale.h>:地域环境
在<locale.h>中,定义了7个常量,一个结构,2个函数。
1、常量的定义
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指定。
<math.h>:数学函数
在<math.h>中定义了一些数学函数和宏,用来实现不同种类的数学运算。下面给出
<math.h>中标准数学函数的函数定义及功能简介,见下表。
<math.h>中定义的函数
函数定义 函数功能简介
double exp(double x);
指数运算函数, 求e的x次幂函数
double log(double x)
对数函数ln(x)
double log10(double x);
对数函数log
double pow(double x, double y);
指数函数(x的y次方)
double sqrt(double x);
计算平方根函数
double ceil(double x);
向上舍入函数
double floor(double x);
向下舍入函数
double fabs(double x);
求浮点数的绝对值
double ldexp(double x, int n);
装载浮点数函数
double frexp(double x, int* exp);
分解浮点数函数
double modf(double x, double* ip);
分解双精度数函数
double fmod(double x, double y);
求模函数
double sin(double x);
计算x的正弦值函数
double cos(double x);
计算x的余弦值函数
double tan(double x);
计算x的正切值函数
double asin(double x);
计算x的反正弦函数
double acos(double x);
计算x的反余弦函数
double atan(double x);
反正切函数1
double atan2(double y, double x);
反正切函数2
double sinh(double x);
计算x的双曲正弦值
double cosh(double x);
计算x的双曲余弦值
double tanh(double x);
计算x的双曲正切值
在标准库中,还有一些与数学计算有关的函数定义在其他头文件中。
<setjmp.h>:非局部跳转
在头文件<setjmp.h>中定义了一种特别的函数调用和函数返回顺序的方式。这种方式不
同于以往的函数调用和返回顺序,它允许程序流程立即从一个深层嵌套的函数中返回。
<setjmp.h>中定义了两个宏:
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的第二个参数指定。
下面通过例子来理解<setjmp.h>中定义的这两个宏。
例程9-1 非局部跳转演示。
#include <setjmp.h>
jmp_buf env; /*定义jmp_buf类型变量*/
int main(void)
{
int value;
value = setjmp(env); /*调用setjmp,为longjmp设置跳转点*/
if (value != 0)
{
printf("Longjmp with value %d\n", value);
exit(value); /*退出程序*/
}
printf("Jump ... \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是成对使用的, 这样程序流程可以从一个深层嵌套的函数
中返回。
<signal.h>:信号
头文件<signal.h>中提供了一些处理程序运行期间引发的各种异常条件的功能,例如一
些来自外部的中断信号等。
在<signal.h>中只定义了两个函数:
int signal(int sig, sigfun fname);
和
int raise(int sig);
signal函数的作用是设置某一信号的对应动作。其中参数sig用来指定哪一个信号被设
置处理函数。在标准C 中支持的信号如下表。
标准C支持的信号
取值 说明 默认执行动作 使用的操作系统
SIGABRT
异常中止 中止程序
UNIX DOS
SIGPPE
算术运算错误 中止程序
UNIX DOS
SIGILL
非法硬件指令 中止程序
UNIX DOS
剩余107页未读,继续阅读
资源评论
- pansonly2015-02-09很好!很清晰,受用了,谢谢楼主!
- lidh57352014-04-03对学习编程,提高对计算机的程序底层的理解有大帮助!
- dt287072012-10-27好资源,找了好久才找到中文版的
iamzzg1988
- 粉丝: 3
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功