头文件“<stdio.h>”和“<stdlib.h>”之间的区别
difference between header files “<stdio.h>” and “<stdlib.h>”
C编程中的头文件“<stdio.h>
”和“<stdlib.h>
”有什么区别?
区分这两个 header 文件的一个简单方法是“”包含 printf() 和 scanf() 的声明,而“”包含malloc() 和 free() 的声明。从这个意义上说,这两个 header 文件的主要区别可以认为,虽然“”包含“文件相关 Input/Output”功能的 header 信息,“ ”包含“内存 Allocation/Freeing”功能的 header 信息。
一个有一组函数声明、常量、宏和类型定义,另一个有不同的组函数声明、常量、宏和类型定义。如果您想查看内容,可以使用简单的文本编辑器打开该文件。
stdio
代表标准input/output,其内容通常但不限于与输入输出操作有关,与硬件或物理设备或与系统支持的文件有关。可用的函数声明、宏和类型定义列表 can be found here:
函数:
对文件的操作:
删除 - 删除文件
重命名 - 重命名文件
tmpfile - 打开一个临时文件
tmpnam - 生成临时文件名
文件访问:
fclose - 关闭文件
fflush - 刷新流
fopen - 打开文件
freopen - 使用不同的文件或模式重新打开流
setbuf - 设置流缓冲区
setvbuf - 更改流缓冲
格式化input/output:
fprintf - 将格式化数据写入流
fscanf - 从流中读取格式化数据
printf - 打印格式化数据到标准输出
scanf - 从标准输入读取格式化数据
snprintf - 将格式化输出写入大小缓冲区
sprintf - 将格式化数据写入字符串
sscanf - 从字符串中读取格式化数据
vfprintf - 将可变参数列表中的格式化数据写入流
vfscanf - 从流中读取格式化数据到可变参数列表
vprintf - 将可变参数列表中的格式化数据打印到标准输出
vscanf - 将格式化数据读入可变参数列表
vsnprintf - 将可变参数列表中的格式化数据写入大小缓冲区
vsprintf - 将可变参数列表中的格式化数据写入字符串
vsscanf - 从字符串中读取格式化数据到可变参数列表
字符input/output:
fgetc - 从流中获取字符
fgets - 从流中获取字符串
fputc - 将字符写入流
fputs - 将字符串写入流
getc - 从流中获取字符
getchar - 从标准输入获取字符
gets - 从标准输入获取字符串
putc - 将字符写入流
putchar - 将字符写入标准输出
puts - 将字符串写入标准输出
ungetc - 从流中提取字符
直接input/output:
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 - 积分 division
labs - 绝对值
ldiv - 积分 division
llabs - 绝对值
lldiv - 积分 division
多字节字符
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
、fopen
、getchar
等)。
stdlib.h
(标准库)包含处理内存管理、文本到数字转换、随机数等例程的宏定义、类型定义和函数声明。(malloc
, calloc
、strtol
、rand
等)。
stdio.h
C库执行Input/Output操作
输入和输出操作也可以在C++中使用C标准输入和输出库(cstdio,在C语言中称为studio.h)进行。该库使用流来操作物理设备,例如键盘、打印机、终端或系统支持的任何其他类型的文件。流是与这些统一交互的抽象;所有流都具有相似的属性,独立于物理媒体的个体特征。
流在 cstdio 库中作为指向 FILE 对象的指针进行处理。指向 FILE 对象的指针唯一标识一个流,并在涉及该流的操作中用作参数。
还存在三个标准流:stdin、stdout 和 stderr,它们是为使用该库的所有程序自动创建和打开的。
stdlib.h
库(标准库)提供了解决各种问题的函数。首先,这个库将允许您通过在堆中分配或释放内存来动态管理内存。它还将使您能够与程序所在的操作系统进行交互 运行。该库还提供了许多其他实用函数,用于在数据类型、算法(排序、二分搜索、伪随机数生成等)和其他一些可能性之间进行转换。
C编程中的头文件“<stdio.h>
”和“<stdlib.h>
”有什么区别?
区分这两个 header 文件的一个简单方法是“
一个有一组函数声明、常量、宏和类型定义,另一个有不同的组函数声明、常量、宏和类型定义。如果您想查看内容,可以使用简单的文本编辑器打开该文件。
stdio
代表标准input/output,其内容通常但不限于与输入输出操作有关,与硬件或物理设备或与系统支持的文件有关。可用的函数声明、宏和类型定义列表 can be found here:
函数:
对文件的操作:
删除 - 删除文件
重命名 - 重命名文件
tmpfile - 打开一个临时文件
tmpnam - 生成临时文件名
文件访问:
fclose - 关闭文件
fflush - 刷新流
fopen - 打开文件
freopen - 使用不同的文件或模式重新打开流
setbuf - 设置流缓冲区
setvbuf - 更改流缓冲
格式化input/output:
fprintf - 将格式化数据写入流
fscanf - 从流中读取格式化数据
printf - 打印格式化数据到标准输出
scanf - 从标准输入读取格式化数据
snprintf - 将格式化输出写入大小缓冲区
sprintf - 将格式化数据写入字符串
sscanf - 从字符串中读取格式化数据
vfprintf - 将可变参数列表中的格式化数据写入流
vfscanf - 从流中读取格式化数据到可变参数列表
vprintf - 将可变参数列表中的格式化数据打印到标准输出
vscanf - 将格式化数据读入可变参数列表
vsnprintf - 将可变参数列表中的格式化数据写入大小缓冲区
vsprintf - 将可变参数列表中的格式化数据写入字符串
vsscanf - 从字符串中读取格式化数据到可变参数列表
字符input/output:
fgetc - 从流中获取字符
fgets - 从流中获取字符串
fputc - 将字符写入流
fputs - 将字符串写入流
getc - 从流中获取字符
getchar - 从标准输入获取字符
gets - 从标准输入获取字符串
putc - 将字符写入流
putchar - 将字符写入标准输出
puts - 将字符串写入标准输出
ungetc - 从流中提取字符
直接input/output:
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 - 积分 division
labs - 绝对值
ldiv - 积分 division
llabs - 绝对值
lldiv - 积分 division
多字节字符
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
、fopen
、getchar
等)。
stdlib.h
(标准库)包含处理内存管理、文本到数字转换、随机数等例程的宏定义、类型定义和函数声明。(malloc
, calloc
、strtol
、rand
等)。
stdio.h
C库执行Input/Output操作 输入和输出操作也可以在C++中使用C标准输入和输出库(cstdio,在C语言中称为studio.h)进行。该库使用流来操作物理设备,例如键盘、打印机、终端或系统支持的任何其他类型的文件。流是与这些统一交互的抽象;所有流都具有相似的属性,独立于物理媒体的个体特征。
流在 cstdio 库中作为指向 FILE 对象的指针进行处理。指向 FILE 对象的指针唯一标识一个流,并在涉及该流的操作中用作参数。
还存在三个标准流:stdin、stdout 和 stderr,它们是为使用该库的所有程序自动创建和打开的。
stdlib.h