C程序设计常用库函数.docx.pdf
《C程序设计常用库函数.docx.pdf》由会员分享,可在线阅读,更多相关《C程序设计常用库函数.docx.pdf(10页珍藏版)》请在三一文库上搜索。
1、C+程序设计常用库函数 木文主要涉及两类库函数,运行期库(run-time library) 和 C+标准库。下而简单介绍这些库的使用要点。 运行期库是用C 语言实现的基础程序库,其它库都以此为基础。MSDN 将运行期库按功能划分,如表 B-1 所示。来自MSDN Library Visual Studio 6.0 Visual C+ Documcntation Using Visual C+ Visual C+ Programmers Guide Run-Time Library Reference Run-Time Routines by Category 表 B-1 运行期库 分类功能相
2、关头文件 ( 不完全 ) 可变参数用于定义可变参数的函数 缓冲区管理按字节管理内存缓冲区 按字节分类多字节字符分类,与当前多字节代码页相关 按字符分类 对单字节字符、宽字符、多字节字符进行分 类。比较常用,如isalpha, isprinto 数据转换 一种数据转换到另一种,例如字符串到int 或 double,或反之。冇很多转换既冇函数实现, 也有宏实现,可选择。 调试程序 debug调试,函数库中有专门的调试版本, 支持单步执行、断言、错误检测、异常,跟踪 堆空间分配,避免内存港露,以及调试信息报 告等。 目录控制 读取或改变目录,创建、删除目录等,也包括 使用环境路径來搜索文件 错误处理
3、 包括断言、检测10 错误、清除错误标记、判 断低级 10 的文件尾 eof等。 异常处理程序 程序终止处理 (terminate) 意外处理 (unexpected) h 文件处理 对磁盘文件的建立、删除、改名、文件访问许 可等操作。 浮点数支持专门针对浮点数的计算,如指数、对数、三角 函数、双曲函数等,也包括错误检测,如溢 出。 输入输岀 从文件或设备中读入数据或写出数据。文件10 要区分文本模式和二进制模式。10 分为 以下 三类: 1、流式工 0, 将数据作为字符或字节序列,有 缓冲。 2、低级 10, 直接调用操作系统,无缓冲。 3、控制台与端口10, 对键盘和字符显示器的 直接读写
4、,对10 设备,如打印机、串行口的 直接读写。 国际化 适应不同语言,与地域locale相关程序、宽 字符、多字节字符、通用文本等等。 内存分配 动态分配、回收内存,如malloc free 等 函数。 进程控制与坏 境控制 进程的启动、停止与管理,也包括线程的启 停。操作系统坏境信息的读取与改变。 排序与查找 对任意类型数组进行排序,折半査找与线性查 找。 字符串管理 对以 NULL 结尾的各种字符串进行操作 时间管理获取当前系统日期时间、转换、调整等操作 注1MSDN按以上19类功能对运行期库分组。 注2同 一 个 函 数 可 能 出 现 在 不 同 功 能 分 组 中 , 也 可 能 出
5、 现 在 不 同 的 头 文 件 中 。 注3 运 行 期 库 是 纯C 语 言 实 现 , 不 包 含C + + 的 内 容 ( 没 有 重 载 、 形 参 缺 省 值 、 引 用 、 模 板 等 ) 。 表 B-2 运行期库头文件 头文件名功能C+包装头文件名 断言设置 字符分类 由库函数执行,检测错课代码 浮点数计算 ISO 64 6字符集处理 检测整数类型的性质 不冋地域文字适应性 公共数学计算 执行非本地goto语句 控制各种异常条件 可变参数的函数 多种有用的类型 (typedef)和宏的定义 输入和输出 多种操作函数 多种字符串的处理 系统时间处理 宽字符流,以及待殊字符串处理
6、宽字符分类 注 1,表中列出的 18 个头文件是作为C+标准库,而运行期库的头文件还有许多未列入。注 2, C+标准库的头 文件大多不含 .h 后缀。 注 3,左边头文件内容被包装到C+标准的命名空间std中。例如, vcasscrt文件大致如下 : namespace std #include ; 表 B-3 标准 C+库头文件 头文件名功能 算法,提供了70 多个模板函数,通过迭代器作用于各种容器,实现排序、查找、集 合运算等算法。 复数,一个模板类和若干模板函数 双端队列容器, 1 个模板类和 3 个支持模板 定义异常基类exception,若 T 模板函数,类似 eh.h 中的定义 支
7、持磁盘文件的iostream操作 提供模板类以构建函数对象,类似于函数指针,供各种容器和算法使用 定义带参格式控制符,用于控制输出格式 定义了basic ios类,作为 iostream的基类 定义了对几种模板类的正向引用, 供 iostream使用 对 ISO646字符集的处理 输入流,定义了模板类basic istream和 basic iostream 迭代器,用于访问容器中的元素,也用于调用各种算法。 定义了模板类numeric limits,其中规范了算术计算中各种类型的值范围 列表,基于双向链表的一种容器。 提供一组模板类和函数,封装和管理地域locale信息,以支持多国文字习惯用
8、法。 映射容器,捉供了一个映射map 和一个多射 multimap。 一个类,一个运算符和若干函数用于请求分配与回收对象 提供若干模板函数,用于数值计算,如求和、求乘积、求部分和等。 队列容器,包含一个队列和一个优先级队列。 集合容器,包含一个集合set和一个多集 multiseto 支持对数组对象的iostream操作,支持与basic string的转换 堆栈容器, stack模板类 标准异常类型,以exception为基类,定义了一组派生类來描述各种异常类型。 定义了basic streambuf模板类,作为一组iostream类的基础 定义了basic_string模板类,一种容器,其
9、中用typedef定义了string类 型。 支持对字符数组对象的iostream操作,支持与C 字符串的转换 ility定义了对偶 pair,作为映射和多射的基木元素 定义了vmlacay模板类,支持可变长的数组 向量容器, 1 个模板类和 3 个支持模板 注 1,表中列出了32 个头文件,加上前而18 个包装头文件,共50 个头文件,组成C+标准库。注 2,还有儿个 头文件未列入文档,hash_map x vhash_sct、ncw,它们没有被完整实现。 注 3,上表中包含了10个新版木的 10 流头文件,而老版木只冇8 个头文件,对应关系如卜?表。 表 B-4 10 流的新旧头文件对比
10、【口版本IO流头文件新版本IO流头文件 h 注 I,同一行上的两个头文件具有大致相同的功能,但内部具体类型有差别。 注 2,新老版本不能用在同一个项目中,因为它们使用不同的库文件(lib 文件和 dll 文件 ) 。 下面是一些常用的 运行期库。 表B-5数学函数 函数原型功能返回值说明 int abs(int x) long labs(long x) double fabs(double x) 求绝对值绝对值 double pow(double x, double y) 求 x 的 y 次方计算结果 double sqrt(double x) 求 x 的平方根计算结果 double fmod
11、(double x, double y) 求 x 除以 y 的余数 余数 使 x=i*y+f, f是返回 值, i 是整数,且 f 与 X 相同符号 double ceil(double x) 大于等于 X 的最小整数ceil (2.8) =3 double floor(double x) 小于等于 x 的故大整数 女 II floor (2.8)=2 double modf(double x, double *y) 取 x 的整数部分送到y 所指向的单元中 X 的小数部分 将浮点数 X 分解为整数部 分和小数部分,如-2.3分 解为 -2 和-0.3 double exp(double x)
12、 e 的 x 次方 double log(double x) 白然对数 In (x),以 e 为底的对数 x0 double loglO(double x) 以 10 为底的对数x0 三角函数 double sin(double x) double sinh(double x) 正弦 sin (x) 双曲正弦 sinh (x) 计算结果X 为弧度值 double cos(double x) double cosh(double x) 余弦 cos (x) 双曲余弦 cosh (x) 计算结果 X 为弧度值 double tan(double x) 正切 tan (x) 计算结果X 为弧度值 d
13、ouble tanh (double x) 双曲正切 double asin (double x) 反 iE 弦 arcsin (x) -1 函数原型功能返回值说明 void srand(unsigned int seed) 设 置 伪 随 机 数 序 列 的 起 点,即随机数生成种子 先设置种子,再调用 rand生成随机数 int rand(void) 生成一个伪随机整数随机正整数, 0 void abort(void) 终止进程,而没冇刷新 缓冲区,也没冇执行消 理 不到万不得已,不要调用 void exit (int status) 先执行清理,刷新缓冲 区,关闭打开的文件, 最后终止进
14、程 返回 0 表示正常,其它值 表示错误。返回值可被操 作系统的批处理命令获 得。 int system(const char *command) 执行 command 串的操 作系统命令返 回 值 就 是 指 定 命令执行所返回的 值, 0 表示正常 启动命令后等待返回。 void qsort( void *base, size_t num, size_t width, int ( cdecl *compare ) (const void *eleml, const void *elem2 ); 对任意类型的数组进行 快速排序(冒泡排序的 改进)。 base是数组 名, num 是元素个数,
15、 width是元素的字节大 小,最后形参是比较函 数指针 比较函数返回 0, 表示两 元 素相等。升序排序要求:返 回值小于0, 表示elemi 小于elem2:返回大于 0,表 示elemi 大 于 elem20降序相反。 void *bsearch (const void *key, const void *base, size t num, size t width, int ( cdecl *compare ) const void *eleml, const void *elem2 ); 折半查找, base 数组 元 素要按升序排序,元素 个数为 num, 元素大小为 width字
16、节,查找key, 最后?个形参是比较函 数的指针。 如果未找到,就 返回 NULLo 女 II 果 找到就返回指 针 指向数组中的 key 如果数组未按升序排序, 或者元索有重复,那么结 果可不可预测。 比较函数与 qsort耍求 相 同。 动态内存管理 void *malloc(size_t size ); 动态请求分配size字 节的内存,但可能得到 更大空间,因为内存分 块管理。 如果内存不够, 就返回 NULL。否 则返回指针指向 所分配的内存 用 free函数來回收内 存。 C 基础两数,许多其 它函数要调用该函数。 void *calloc (size t num, size_t
17、size ); 动态请求分配一个数 组,而且初始化为0。 num 个元素,每个元素 大小为 size个字节 同上 void *realloc (void *memblock, size t size ); 对己分配的空间重新分 配,可改变人小。如果 第一个形参为NULL, 就 等同于 malloc函数 同上 void free (void *memblock ); 动态回收所分配的内 存,实参指针一定是用 malloc calloc 或 realloc得到的 如果实参指针错误,可能 导致不可预料的错误 数据转换 int tolower(int c); 将字符 c 转换为小写, 如果可能的话 小
18、写字符 int toupper (int c); 将字符 c 转换为大写, 如果可能的话 大写字符 int atoi(const char * string) 字符串转换为整数整数 double atof (const char * string) 字符串转换为double doubig 值 double strtod(const char ring, char *endptr ); 字符串转换到double, 而且得到停止指针 double 值 第 2 个形参得到字符串中 停止扫描的字符指针。 strtol函数处理 long strtoul 处理 unsigned long char * i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 常用 库函数 docx
链接地址:https://www.31doc.com/p-5615847.html