标准库概述
C 标准库是 C 语言规范的一部分,提供跨平台的通用功能。C99 标准库包含 24 个头文件,涵盖输入输出、字符串处理、数学运算、内存管理、时间日期、错误处理等。掌握标准库是高效 C 编程的基础——避免重复造轮子,写出可移植的代码。
头文件分类
| 类别 | 头文件 |
|---|---|
| 诊断 | <assert.h> |
| 字符处理 | <ctype.h> |
| 错误 | <errno.h> |
| 浮点环境 | <fenv.h> (C99) |
| 浮点常量 | <float.h> |
| 整数格式 | <inttypes.h> (C99) |
| 本地化 | <locale.h> |
| 数学 | <math.h> |
| 信号 | <signal.h> |
| 可变参数 | <stdarg.h> |
| 布尔 | <stdbool.h> (C99) |
| 标准定义 | <stddef.h> |
| 整数类型 | <stdint.h> (C99) |
| 标准 I/O | <stdio.h> |
| 标准库 | <stdlib.h> |
| 字符串 | <string.h> |
| 时间 | <time.h> |
| 复数 | <complex.h> (C99) |
| 宽字符 | <wchar.h> (C99) |
| 宽字符分类 | <wctype.h> (C99) |
使用原则
#include <stdio.h> /* 系统头文件用 <> */
#include "myheader.h" /* 用户头文件用 "" */
/* 不要重复包含 */
/* 头文件保护或 #pragma once */
命名空间
- 标准库函数名:小写,如
printf、malloc - 标准库宏名:通常大写,如
NULL、EOF - 标准库类型名:通常
_t后缀,如size_t、int32_t - 用户代码避免以
_开头(保留给实现)
可移植性
#include <stdio.h>
#include <stdlib.h>
/* 使用标准函数,不依赖平台特性 */
FILE *fp = fopen("data.txt", "r");
if (fp != NULL) {
/* 标准 I/O */
fclose(fp);
}
最佳实践
- 优先使用标准库函数
- 理解每个函数的边界条件
- 检查返回值(尤其是 I/O 和内存分配)
- 包含必要的头文件
- 不假设标准库的实现细节