问题描述
C 编程中的头文件“<stdio.h>
”和“<stdlib.h>
”有什么区别?
解决方法
一个有一组函数声明、常量、宏和类型定义,另一个有一组不同的函数声明、常量、宏和类型定义。如果您想查看内容,可以使用简单的文本编辑器打开文件。
stdio
代表标准输入/输出,其内容通常但不完全与输入输出操作相关,无论是硬件或物理设备,还是系统支持的文件。可用的函数声明、宏和类型定义列表 can be found here:
功能:
-
文件操作:
-
remove - 删除文件
-
重命名 - 重命名文件
-
tmpfile - 打开一个临时文件
-
tmpnam - 生成临时文件名
-
-
文件访问:
-
fclose - 关闭文件
-
fflush - 刷新流
-
fopen - 打开文件
-
freopen - 使用不同的文件或模式重新打开流
-
setbuf - 设置流缓冲区
-
setvbuf - 更改流缓冲
-
-
格式化输入/输出:
-
fprintf - 将格式化数据写入流
-
fscanf - 从流中读取格式化数据
-
printf - 将格式化数据打印到标准输出
-
scanf - 从标准输入读取格式化数据
-
snprintf - 将格式化输出写入大小缓冲区
-
sprintf - 将格式化数据写入字符串
-
sscanf - 从字符串中读取格式化数据
-
vfprintf - 将变量参数列表中的格式化数据写入流
-
vfscanf - 将流中的格式化数据读入可变参数列表
-
vprintf - 将变量参数列表中的格式化数据打印到标准输出
-
vscanf - 将格式化数据读入可变参数列表
-
vsnprintf - 将格式化数据从变量参数列表写入大小缓冲区
-
vsprintf - 将变量参数列表中的格式化数据写入字符串
-
vsscanf - 从字符串中读取格式化数据到变量参数列表中
-
-
字符输入/输出:
-
fgetc - 从流中获取字符
-
fgets - 从流中获取字符串
-
fputc - 将字符写入流
-
fputs - 将字符串写入流
-
getc - 从流中获取字符
-
getchar - 从标准输入获取字符
-
gets - 从标准输入获取字符串
-
putc - 将字符写入流
-
putchar - 将字符写入标准输出
-
puts - 将字符串写入标准输出
-
ungetc - 从流中取消字符
-
-
直接输入/输出:
-
fread - 从流中读取数据块
-
fwrite - 将数据块写入流
-
-
文件定位:
-
fgetpos - 获取流中的当前位置
-
fseek - 重新定位流位置指示器
-
fsetpos - 设置流的位置指示器
-
ftell - 获取流中的当前位置
-
rewind - 将流的位置设置为开头
-
-
错误处理:
-
clearerr - 清除错误指示器
-
feof - 检查文件结束指示符
-
ferror - 检查错误指示器
-
perror - 打印错误信息
-
宏:
-
BUFSIZ - 缓冲区大小
-
EOF - 文件结束
-
FILENAME_MAX - 文件名的最大长度
-
FOPEN_MAX - 同时打开的流的潜在限制
-
L_tmpnam - 临时文件名的最小长度
-
NULL - 空指针(宏)
-
TMP_MAX - 临时文件的数量
-
另外:_IOFBF、_IOLBF、_IONBF(与setvbuf一起使用) 和 SEEK_CUR、SEEK_END 和 SEEK_SET(与 fseek 一起使用)。
类型:
-
FILE - 包含控制流的信息的对象
-
fpos_t - 包含指定文件位置信息的对象
-
size_t - 无符号整数类型
stdlib
代表标准库,它具有通用功能,包括动态内存管理、随机数生成、通信、算术、搜索、排序和转换等。 函数声明、宏和类型定义的列表可用can be found here:
功能
-
字符串转换
-
atof - 将字符串转换为双精度
-
atoi - 将字符串转换为整数
-
atol - 将字符串转换为长整数
-
atoll - 将字符串转换为长整型
-
strtod - 将字符串转换为双精度
-
strtof - 将字符串转换为浮点
-
strtol - 将字符串转换为长整数
-
strtold - 将字符串转换为 long double
-
strtoll - 将字符串转换为长整型
-
strtoul - 将字符串转换为无符号长整数
-
strtoull - 将字符串转换为无符号长整型
-
-
伪随机序列生成
-
rand - 生成随机数
-
srand - 初始化随机数生成器
-
-
动态内存管理
-
calloc - 分配和零初始化数组
-
free - 释放内存块
-
malloc - 分配内存块
-
realloc - 重新分配内存块
-
-
环境
-
abort - 中止当前进程
-
atexit - 设置退出时执行的函数
-
at_quick_exit - 设置在快速退出时执行的函数
-
exit - 终止调用进程
-
getenv - 获取环境字符串
-
quick_exit - 快速终止调用进程
-
system - 执行系统命令
-
_Exit - 终止调用进程
-
-
搜索和排序
-
bsearch - 数组中的二分查找
-
qsort - 对数组元素进行排序
-
-
整数运算
-
abs - 绝对值
-
div - 积分除法
-
实验室 - 绝对价值
-
ldiv - 积分除法
-
llabs - 绝对值
-
lldiv - 积分除法
-
-
多字节字符
-
mblen - 获取多字节字符的长度
-
mbtowc - 将多字节序列转换为宽字符
-
wctomb - 将宽字符转换为多字节序列
-
-
多字节字符串
-
mbstowcs - 将多字节字符串转换为宽字符串
-
wcstombs - 将宽字符串转换为多字节字符串
-
宏常量
-
EXIT_FAILURE - 失败终止代码
-
EXIT_SUCCESS - 成功终止代码
-
MB_CUR_MAX - 多字节字符的最大大小
-
NULL - 空指针
-
RAND_MAX - rand 返回的最大值
类型
-
div_t - div 返回的结构
-
ldiv_t - ldiv 返回的结构
-
lldiv_t - lldiv 返回的结构
-
size_t - 无符号整数类型
区分这两个头文件的一个简单方法是“
它们有不同的内容。
C 标准库分为几个主要区域,每个区域都有一个单独的头文件。
stdio.h
(标准 I/O)包含处理文本和二进制 I/O 的例程的宏定义、类型定义和函数声明(printf
、scanf
、{{1 }}、fopen
等)。
getchar
(标准库)包含用于处理内存管理、文本到数字转换、随机数等例程的宏定义、类型定义和函数声明(stdlib.h
、{{ 1}}、malloc
、calloc
等)。
stdio.h
用于执行输入/输出操作的C库 输入和输出操作也可以使用 C 标准输入和输出库(cstdio,在 C 语言中称为 studio.h)在 C++ 中执行。该库使用流来操作物理设备,例如键盘、打印机、终端或系统支持的任何其他类型的文件。流是与这些统一交互的抽象;所有流都具有相似的属性,独立于物理媒体的个体特征。
流在 cstdio 库中作为指向 FILE 对象的指针进行处理。指向 FILE 对象的指针唯一标识一个流,并在涉及该流的操作中用作参数。
还存在三个标准流:stdin、stdout 和 stderr,它们会自动为所有使用该库的程序创建和打开。
stdlib.h