C - 头文件 "<stdio.h>" 和 "<stdlib.h>" 之间的差异



C编程中的头文件"<stdio.h>"one_answers"<stdlib.h>"之间有什么区别?

一个有一组函数声明、常量、宏和类型定义,另一个有不同的函数声明、常数、宏和类定义。如果您想查看内容,可以使用简单的文本编辑器打开文件。


stdio代表标准输入/输出,其内容通常但不完全与输入输出操作有关,无论是与硬件或物理设备有关,还是与系统支持的文件有关。可用的函数声明、宏和类型定义列表可以在这里找到:

功能:

  • 文件操作:

    • remove-删除文件

    • rename-重命名文件

    • tmpfile-打开临时文件

    • tmpnam-生成临时文件名

  • 文件访问:

    • fclose-关闭文件

    • fflush-冲洗流

    • fopen-打开文件

    • freopen-使用不同的文件或模式重新打开流

    • setbuf-设置流缓冲区

    • setvbuf-更改流缓冲

  • 格式化输入/输出:

    • fprintf-将格式化数据写入流

    • fscanf-从流读取格式化数据

    • printf-将格式化数据打印到标准输出

    • scanf-从stdin 读取格式化数据

    • snprintf-将格式化输出写入大小缓冲区

    • sprintf-将格式化数据写入字符串

    • sscanf-从字符串读取格式化数据

    • vfprintf-将变量参数列表中的格式化数据写入流

    • vfscanf-从流中读取格式化数据到变量参数列表

    • vprintf-将变量参数列表中的格式化数据打印到标准输出

    • vscanf-将格式化数据读取到变量参数列表中

    • vsnprintf-将格式化的数据从变量参数列表写入大小缓冲区

    • vsprintf-将变量参数列表中的格式化数据写入字符串

    • vsscanf-将字符串中的格式化数据读取到变量参数列表中

  • 字符输入/输出:

    • fgetc-从流中获取字符

    • fgets-从流中获取字符串

    • fputc-将字符写入流

    • fputs-将字符串写入流

    • getc-从流中获取字符

    • getchar-从stdin 获取字符

    • gets-从stdin 获取字符串

    • putc-将字符写入流

    • putchar-将字符写入stdout

    • puts-将字符串写入stdout

    • ungetc-从流中取消设置字符

  • 直接输入/输出:

    • fread-从流读取数据块

    • fwrite-将数据块写入流

  • 文件定位:

    • fgetpos-获取流中的当前位置

    • fseek-重新定位流位置指示器

    • fsetpos-设置流的位置指示器

    • ftell-获取流中的当前位置

    • 倒带-将流的位置设置为起始

  • 错误处理:

    • 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代表标准库,它具有通用功能,包括动态内存管理、随机数生成、通信、算术、搜索、排序和转换等。可用的函数声明、宏和类型定义列表可在此处找到:

功能

  • 字符串转换

    • atof-将字符串转换为双

    • atoi-将字符串转换为整数

    • atol-将字符串转换为长整数

    • atoll-将字符串转换为长整型

    • strtod-将字符串转换为双

    • strtof-将字符串转换为浮动

    • strtol-将字符串转换为长整数

    • strtelld-将字符串转换为长双

    • strtoll-将字符串转换为长整型

    • strtoul-将字符串转换为无符号长整数

    • strtoull-将字符串转换为无符号长整型

  • 伪随机序列生成

    • rand-生成随机数

    • srand-初始化随机数生成器

  • 动态内存管理

    • calloc-分配和零初始化数组

    • free-取消分配内存块

    • malloc-分配内存块

    • realloc-重新定位内存块

  • 环境

    • 中止-中止当前进程

    • atexit-设置要在退出时执行的功能

    • at_quick_exit-设置要在快速退出上执行的功能

    • exit-终止调用进程

    • getenv-获取环境字符串

    • quick_exit-终止调用过程快速

    • system-执行系统命令

    • _退出-终止呼叫过程

  • 搜索和排序

    • bsearch-数组中的二进制搜索

    • qsort-对阵列的元素进行排序

  • 整数算法

    • abs-绝对值

    • div-积分除法

    • 实验室-绝对值

    • ldiv-积分除法

    • llabs-绝对值

    • lldiv-积分除法

  • 多字节字符

    • mblen-获取多字节字符的长度

    • mbtowc-将多字节序列转换为宽字符

    • wc坟墓-将宽字符转换为多字节序列

  • 多字节字符串

    • mbstowcs-将多字节字符串转换为宽字符串

    • wcstombs-将宽字符串转换为多字节字符串

宏常量

  • EXIT_FAILURE-故障终止代码

  • EXIT_SUCCESS-成功终止代码

  • MB_CUR_MAX-多字节字符的最大大小

  • NULL-空指针

  • RAND_MAX-RAND 返回的最大值

类型

  • div_t-div 返回的结构

  • ldiv_t-ldiv 返回的结构

  • lldiv_t-lldiv 返回的结构

  • size_t-无符号积分型

区分这两个头文件的一种简单方法是,"<stdio.h>"包含printf()和scanf()的声明,而"<stdlib.h>"包含malloc()和free()的宣言。从这个意义上说,这两个头文件的主要区别可以认为,虽然"<stdio.h>"包含"与文件相关的输入/输出"函数的头信息,但"<stdlib.h>"则包含"内存分配/释放"函数的首标信息。

它们有不同的内容。

C标准库分为几个主要区域,每个区域都有一个单独的头文件。

stdio.h(标准I/O)包含用于处理文本和二进制I/O(printfscanffopengetchar等)的例程的宏定义、类型定义和函数声明

stdlib.h(标准库)包含用于处理内存管理、文本到数字转换、随机数等(malloccallocstrtolrand等)的例程的宏定义、类型定义和函数声明

stdio.h

执行输入/输出操作的C库输入和输出操作也可以使用C标准输入和输出库(cstdio,在C语言中称为studio.h)在C++中执行。此库使用流来操作物理设备,如键盘、打印机、终端或系统支持的任何其他类型的文件。流是一种抽象,可以与这些流进行统一交互;所有流都具有类似的属性,与物理介质的单个特性无关。

流在cstdio库中作为指向FILE对象的指针进行处理。指向FILE对象的指针唯一地标识流,并在涉及该流的操作中用作参数。

还有三个标准流:stdin、stdout和stderr,它们是为使用库的所有程序自动创建和打开的。

stdlib.h

<stdlib.h>library(标准库)提供了回答各种问题的函数。首先,这个库将允许您通过分配或释放堆中的内存来动态管理内存。它还允许您与运行该程序的操作系统进行交互。该库还提供了许多其他实用函数,用于在数据类型、算法(排序、二分搜索、生成伪随机数等)和其他可能性之间进行转换。

最新更新