Appearance
C 标准库 - 参考手册
概述
C 标准库是 C 语言编程中不可或缺的一部分,它提供了一组预定义的函数、宏和类型定义,用于执行常见的编程任务。C 标准库由 ANSI C (C89/C90) 标准首次定义,并在后续的 C99、C11 和 C17 标准中不断扩展和完善。
标准库的历史
- C89/C90 (ANSI C): 首个 C 语言标准,定义了 15 个标准头文件
- C99: 新增了 6 个头文件,引入了布尔类型、复数支持等特性
- C11: 新增了 3 个头文件,引入了线程支持、原子操作等特性
- C17: C11 的修订版,主要是错误修正和澄清
标准库头文件列表
C89/C90 标准头文件
- <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> - 时间和日期函数
C99 新增头文件
- <stdbool.h> - 布尔类型和值
- <stdint.h> - 标准整数类型
- <inttypes.h> - 整数类型格式转换
- <complex.h> - 复数运算
- <tgmath.h> - 类型泛型数学
- <fenv.h> - 浮点环境
C11 新增头文件
- <stdalign.h> - 对齐
- <stdatomic.h> - 原子类型和操作
- <stdnoreturn.h> - _Noreturn 类型
标准库的主要功能分类
1. 输入/输出 (I/O)
- 标准输入/输出流
- 文件操作
- 格式化输入/输出
2. 字符串处理
- 字符串复制、连接、比较
- 字符串搜索
- 字符串转换
3. 内存管理
- 动态内存分配
- 内存操作
4. 数学运算
- 基本数学函数
- 三角函数
- 指数和对数函数
5. 时间和日期
- 时间获取和转换
- 时间格式化
6. 工具函数
- 类型转换
- 随机数生成
- 进程控制
- 搜索和排序
7. 诊断和错误处理
- 断言
- 错误代码
- 信号处理
使用标准库
包含头文件
要使用标准库中的函数,需要包含相应的头文件:
c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>链接标准库
大多数现代编译器会自动链接标准库,但在某些情况下可能需要手动指定:
bash
gcc program.c -o program -lm标准库的最佳实践
- 始终包含必要的头文件 - 确保所有使用的函数都有相应的头文件声明
- 检查返回值 - 许多标准库函数会返回错误代码,应该检查这些返回值
- 使用安全的函数 - 优先使用带长度限制的函数,如
snprintf而不是sprintf - 处理内存分配失败 - 检查
malloc等函数的返回值是否为NULL - 释放分配的内存 - 使用
free释放动态分配的内存 - 关闭打开的文件 - 使用
fclose关闭打开的文件 - 避免未定义行为 - 遵循标准库函数的使用规范
标准库的兼容性
C 标准库在不同平台和编译器之间具有很高的兼容性,但仍需注意:
- 不同编译器可能提供额外的非标准扩展
- 某些函数的行为可能因平台而异
- 新标准中的函数可能在旧编译器中不可用
参考资源
- ISO/IEC 9899 - C 语言标准官方文档
- cppreference.com - 在线的 C/C++ 标准库参考
- man pages - Linux/Unix 系统上的手册页
- MSDN - Microsoft 的 C 运行时库文档
总结
C 标准库是 C 语言编程的基础,掌握标准库的使用对于编写高效、可移植的 C 程序至关重要。本参考手册将详细介绍每个标准库头文件的功能和使用方法,帮助您充分利用 C 标准库的强大功能。