C 语言的标准库包括了一系列为程序开发提供的预定义函数、宏和数据类型。它们被分成不同的头文件,每个头文件包含相关的功能和操作。以下是 C 语言标准库的详细介绍,包括每个头文件的功能和常用函数的使用。
1. 标准输入输出库 (stdio.h)
- 功能: 提供输入和输出操作。
- 常用函数:
printf(const char *format, ...):格式化输出到标准输出(控制台)。scanf(const char *format, ...):从标准输入读取格式化输入。fopen(const char *filename, const char *mode):打开文件。fclose(FILE *stream):关闭文件。fread(void *ptr, size_t size, size_t count, FILE *stream):从文件读取数据。fwrite(const void *ptr, size_t size, size_t count, FILE *stream):向文件写入数据。fseek(FILE *stream, long offset, int whence):设置文件位置指针。ftell(FILE *stream):获取文件位置指针。fprintf(FILE *stream, const char *format, ...):格式化输出到文件。fscanf(FILE *stream, const char *format, ...):从文件读取格式化输入。- 示例:
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "w"); if (file != NULL) { fprintf(file, "Hello, World!\n"); fclose(file); } return 0; }
2. 标准库 (stdlib.h)
- 功能: 提供内存管理、程序控制和转换功能。
- 常用函数:
malloc(size_t size):分配内存。calloc(size_t num, size_t size):分配并初始化内存。realloc(void *ptr, size_t size):重新分配内存。free(void *ptr):释放内存。exit(int status):终止程序。atexit(void (*func)(void)):注册程序退出时执行的函数。atoi(const char *str):将字符串转换为整数。atof(const char *str):将字符串转换为浮点数。- 示例:
#include <stdlib.h> #include <stdio.h> int main() { int *array = (int *)malloc(10 * sizeof(int)); if (array == NULL) { printf("Memory allocation failed\n"); return 1; } for (int i = 0; i < 10; i++) { array[i] = i; } free(array); return 0; }
3. 字符串处理库 (string.h)
- 功能: 提供字符串操作功能。
- 常用函数:
strlen(const char *str):计算字符串长度。strcpy(char *dest, const char *src):复制字符串。strcat(char *dest, const char *src):连接字符串。strcmp(const char *str1, const char *str2):比较两个字符串。strstr(const char *haystack, const char *needle):查找子字符串。- 示例:
#include <string.h> #include <stdio.h> int main() { char src[50] = "Hello"; char dest[50]; strcpy(dest, src); strcat(dest, " World!"); printf("Combined String: %s\n", dest); return 0; }
4. 字符处理库 (ctype.h)
- 功能: 提供字符分类和转换功能。
- 常用函数:
isdigit(int c):判断字符是否为数字。isalpha(int c):判断字符是否为字母。islower(int c):判断字符是否为小写字母。isupper(int c):判断字符是否为大写字母。tolower(int c):将字符转换为小写。toupper(int c):将字符转换为大写。- 示例:
#include <ctype.h> #include <stdio.h> int main() { char c = 'A'; if (isupper(c)) { printf("Character is uppercase\n"); } c = tolower(c); printf("Lowercase: %c\n", c); return 0; }
5. 数学库 (math.h)
- 功能: 提供数学函数。
- 常用函数:
sin(double x):计算正弦。cos(double x):计算余弦。tan(double x):计算正切。sqrt(double x):计算平方根。pow(double base, double exponent):计算幂。log(double x):计算自然对数。exp(double x):计算指数函数。- 示例:
#include <math.h> #include <stdio.h> int main() { double value = 16.0; double result = sqrt(value); printf("Square root of %.2f is %.2f\n", value, result); return 0; }
6. 时间和日期库 (time.h)
- 功能: 提供时间和日期操作功能。
- 常用函数:
time(time_t *timer):获取当前时间。localtime(const time_t *timer):将时间转换为本地时间。gmtime(const time_t *timer):将时间转换为 UTC 时间。strftime(char *str, size_t maxsize, const char *format, const struct tm *tm):格式化时间。- 示例:
#include <time.h> #include <stdio.h> int main() { time_t now; struct tm *tm_info; char buffer[26]; time(&now); tm_info = localtime(&now); strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); printf("Current time: %s\n", buffer); return 0; }
7. 定义库 (limits.h)
- 功能: 提供数据类型的限制。
- 常用宏:
CHAR_MAX:字符型变量的最大值。INT_MAX:整型变量的最大值。LONG_MAX:长整型变量的最大值。- 示例:
#include <limits.h> #include <stdio.h> int main() { printf("INT_MAX: %d\n", INT_MAX); printf("CHAR_MAX: %d\n", CHAR_MAX); return 0; }
8. 错误处理库 (errno.h)
- 功能: 提供错误码和错误处理功能。
- 常用宏:
errno:错误码变量。perror(const char *str):打印错误信息。strerror(int errnum):返回错误码的字符串描述。- 示例:
#include <errno.h> #include <stdio.h> #include <stdlib.h> int main() { FILE *file = fopen("nonexistent.txt", "r"); if (file == NULL) { perror("Error opening file"); return EXIT_FAILURE; } fclose(file); return EXIT_SUCCESS; }
9. 系统库 (unistd.h)
- 功能: 提供系统调用和 POSIX 标准函数(主要用于 Unix/Linux 系统)。
- 常用函数:
read(int fd, void *buf, size_t count):从文件描述符读取数据。write(int fd, const void *buf, size_t count):向文件描述符写入数据。close(int fd):关闭文件描述符。fork():创建进程。exec():执行程序。- 示例:
#include <unistd.h> #include <stdio.h> int main() { char buf[100]; ssize_t n = read(STDIN_FILENO, buf, sizeof(buf)); if (n > 0) { write(STDOUT_FILENO, buf, n); } return 0; }
10. 动态链接库 (dlfcn.h)
-
功能: 提供动态链接库的操作功能(主要用于 Unix/Linux 系统)。
-
常用函数:
dlopen(const char *filename, int flags):加载动态库。dlsym(void *handle, const char *symbol):获取符号地址。dlclose(void *handle):关闭动态库。- 示例:
#include <dlfcn.h> #include <stdio.h> int main() { void *handle; void (*func)(); char *error; handle = dlopen("./libmylib.so", RTLD_LAZY); if (!handle) { fprintf(stderr, "%s\n", dlerror()); return 1; } dlerror(); // Clear any existing error func = (void (*)())dlsym(handle, "my_function"); if ((error = dlerror()) != NULL) { fprintf(stderr, "%s\n", error); return 1; } func(); // Call the function dlclose(handle); return 0; }
11. 标准定义 (stdarg.h)
- 功能: 提供处理可变参数列表的功能。
- 常用宏:
va_list:可变参数列表类型。va_start(va_list ap, last):初始化va_list。va_arg(va_list ap, type):访问可变参数。va_end(va_list ap):结束访问。- 示例:
#include <stdarg.h> #include <stdio.h> void print_numbers(int num, ...) { va_list args; va_start(args, num); for (int i = 0; i < num; i++) { printf("%d\n", va_arg(args, int)); } va_end(args); } int main() { print_numbers(3, 10, 20, 30); return 0; }
12. 多字节字符库 (wchar.h)
- 功能: 提供宽字符和多字节字符处理功能。
- 常用函数:
wprintf(const wchar_t *format, ...):宽字符格式化输出。wscanf(const wchar_t *format, ...):宽字符格式化输入。mbstowcs(wchar_t *dest, const char *src, size_t n):多字节字符到宽字符的转换。wcstombs(char *dest, const wchar_t *src, size_t n):宽字符到多字节字符的转换。- 示例:
#include <wchar.h> #include <stdio.h> int main() { wchar_t wstr[] = L"Hello, World!"; wprintf(L"%ls\n", wstr); return 0; }
13. 标准类型 (stddef.h)
- 功能: 提供标准类型和宏定义。
- 常用定义:
size_t:无符号整数类型,用于表示对象大小。ptrdiff_t:用于表示两个指针之间的差值。NULL:空指针常量。- 示例:
#include <stddef.h> #include <stdio.h> int main() { size_t size = sizeof(int); printf("Size of int: %zu\n", size); return 0; }
这些标准库头文件提供了丰富的功能,使 C 语言能够进行各种基本操作,如内存管理、字符串处理、数学计算、文件操作等。每个头文件中的函数和宏都是根据 C 标准定义的,可以在大多数 C 语言编译器和平台上使用。

评论(0)
登录 后参与评论。