Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++:cstdio 头文件详解

C++:cstdio 头文件详解

作者头像
全栈程序员站长
发布于 2022-11-01 05:25:21
发布于 2022-11-01 05:25:21
2.4K0
举报

大家好,又见面了,我是你们的朋友全栈君。

<cstdio> (stdio.h)

header

C库执行输入/输出操作:

输入和输出操作也可以在C++实现,通过使用C标准输入和输出库(cstdio,在C语言中称为stdio.h)。

这个库使用流来操作物理设备如键盘,打印机,终端或者系统支持的任何其他类型的文件。

流是一种以统一的方式与这些交互的抽象; 所有流都具有相似的属性,与它们所关联的物理介质的各个特征无关。

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

在使用库的时候会自动创建三个标准流:stdin, stdout and stderr

流属性

Streams有一些属性可以定义可以在它们上使用哪些函数以及它们如何通过它们处理数据输入或输出。大多数这些属性是在流与使用 fopen 函数的文件(已打开)关联时定义的:

读/写访问 | 文字/二进制 | 缓冲 | 方向

指定流是否对与其关联的物理介质具有读取或写入访问权限(或两者)。

文本流被认为代表一组文本行,每行以新行字符结尾。根据运行应用程序的环境,可能会对文本流进行一些字符转换,以使某些特殊字符适应环境的文本文件规范。另一方面,二进制流是从物理介质写入或读取的字符序列,没有翻译,与读取或写入流的字符一一对应。

缓冲区是一块存储器,其中数据在物理读取或写入相关文件或设备之前被累积。流可以是完全缓冲,行缓冲或无缓冲。在完全缓冲的流上,在填充缓冲区时读取/写入数据,在线路缓冲的流上发生这种情况,当遇到换行符时,在无缓冲的流上,字符意图尽快读取/写入。

在打开时,流没有方向。一旦对它们执行输入/输出操作,它们就会变为byte-oriented或wide-oriented,具体取决于所执行的操作(通常,<cstdio>中定义的函数是byte-oriented,而<cwchar>中的函数是wide-oriented)。有关详细信息,请参阅cwchar

指示符

Streams具有确定的内部指示符,用于指定其当前状态,并影响对其执行的某些输入和输出操作的行为:

错误指示符

当与流相关的操作发生错误时,将设置此指示符。可以使用ferror功能检查此指示器,并可以通过调用clearerr,freopen或rewind来重置此指示器。

文件结束指示符

设置时,表示使用流执行的上次读取或写入操作已到达文件结尾。可以使用feof函数进行检查,可以通过调用clearerr或freopen或调用任何重定位函数(rewind,fseek和fsetpos)来重置。

位置指示符

它是每个流的内部指针,指向下一个I/O操作中要读取或写入的下一个字符。它的值可以通过ftell和fgetpos函数获得,并且可以使用rewinding,fseek和fsetpos重新定位函数来更改。


函数

文件操作:

(function )

remove

删除文件

rename

重命名文件

tmpfile

打开临时文件

tmpnam

生成临时文件名

文件访问:

(function )

fclose

关闭打开的文件流

fflush

刷新流

fopen

打开文件流

freopen

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

setbuf

设置缓冲流

setvbuf

改变缓冲流

格式化输入/输出:

(function )

fprintf

将格式化数据写入流

fscanf

从流中读取格式化数据

printf

将格式化数据打印到stdout

scanf

从stdin读取格式化数据

snprintf

将格式化输出写入一定大小的缓冲区

sprintf

将格式化数据写入字符串

sscanf

从字符串读取格式化数据

vfprintf

将格式化数据从变量参数列表写入流

vfscanf

将格式化数据从流读入变量参数列表

vprintf

将格式化数据从变量参数列表打印到stdout

vscanf

将格式化数据读入变量参数列表

vsnprintf

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

vsprintf

将格式化数据从变量参数列表写入字符串

vsscanf

将格式化数据从字符串读入变量参数列表

字符输入/输出:

(function )

fgetc

从流中获取字符

fgets

从流中获取字符串

fputc

将字符写入流

fputs

将字符串写入流

getc

从流中获取字符

getchar

从stdin 中获取字符

gets

从stdin 中获取字符串

putc

将字符写入流

putchar

将字符写入stdout

puts

将字符串写入stdout

ungetc

将字符放回流中


直接输入/输出:

(function )

fread

从流中读取数据块

fwrite

写数据块到流

文件定位:

(function )

fgetpos

获取流中的当前位置

fseek

重新定位流位置指示符

fsetpos

设置流的位置指示符

ftell

获取流中的当前位置

rewind

将流的位置设置为开头

错误处理:

(function )

clearerr

清除错误指示符

feof

检查文件结束指示符

ferror

检查错误指示符

perror

打印错误消息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/203997.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C/C++ (stdio.h)标准库详解
cstdio,在C语言中称为stdio.h。该库使用所谓的流与物理设备(如键盘、打印机、终端)或系统支持的任何其他类型的文件一起操作。
DevKevin
2024/03/19
1.2K0
C/C++ (stdio.h)标准库详解
C/C++学习记录--标准库头文件stdio.h
多数与C语言输入输出相关的函数在<stdio.h>中定义(C++中的<cstdio>)。
用户7886150
2021/02/14
9480
C语言:文件操作详解
       我们在写程序的时候,输入的数据是存储在电脑内存中的,如果程序退出内存回收,相应数据也就丢失了,等再次运行程序,就看不到上次输入的数据了,所以为了能够让我们的数据永久化保存,我们可以使用文件!
小陈在拼命
2024/02/17
8880
C语言:文件操作详解
【C语言】看了这篇文章,如果你还不会文件操作的话,我把这篇文章给吃了(doge)
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~2021博客之星Top63~作者周榜84﹣作者总榜704~ 🆔本文由 謓泽 原创 CSDN首发🙉 如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 📣系列专栏-【C】系列_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 文件操作⇢目录 🚩wr
謓泽
2023/02/22
9100
【C语言】看了这篇文章,如果你还不会文件操作的话,我把这篇文章给吃了(doge)
【c语言】详解文件操作(二)
fgetc为字符输入函数,fputc为字符输出函数,适用所以输入流和输出流 函数原型:
用户11029269
2024/03/19
1750
【c语言】详解文件操作(二)
【C语言基础】:文件操作详解(后篇)
将字符写入流 将一个字符写入流并推进位置指示器。 字符被写入流的内部位置指示器所指示的位置,然后自动向前移动一个。
爱喝兽奶的熊孩子
2024/04/11
2160
【C语言基础】:文件操作详解(后篇)
轻松拿捏C语言——【文件操作】
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows 环境后缀为.exe)
用户11162265
2024/06/14
1580
轻松拿捏C语言——【文件操作】
【c语言】详解文件操作(一)
我们都知道程序的处理结果或计算结果会随着程序的运行结束而消失,且如果再次运行程序我们是看不到上次程序的数据的。此时我们就引入了文件的概念,因此我们将程序运行结束后仍需保存的数值和字符串等数据保存在文件。 那么到底什么是文件呢? 磁盘上的文件是文件。但是在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
用户11029269
2024/03/19
1330
【c语言】详解文件操作(一)
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?那是因为C语言程序在启动的时候,默认打开了3个流:
迷迭所归处
2025/04/17
2130
C语言 —— 指尖跃迁 刻印永恒 - 文件操作
【C进阶】—— 一篇文章带你学会C语言的文件操作
一个文件要有一个唯一的文件标识,以便用户识别和引用。 为了方便起见,文件标识常被称为文件名。
YIN_尹
2024/01/23
3330
【C进阶】—— 一篇文章带你学会C语言的文件操作
【C 语言文件操作】—— 内存映射与高效 I/O 策略的深度融合
当我们要准确地指定一个文件以便计算机能够找到并操作它时,就需要同时使用路径和文件名。它们共同构成了文件的完整标识,让操作系统知道去哪里找到这个特定的文件。
换一颗红豆
2024/12/20
5580
【C 语言文件操作】—— 内存映射与高效 I/O 策略的深度融合
C语言的几个标准库
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
云深无际
2021/04/14
3.8K0
C语言的几个标准库
C语言进阶(十四) - 文件管理
我们知道写的C程序是运行在内存上的,当程序运行结束后,程序相关的数据就消失了,这些数据并没有保存起来。如何保存程序运行产生的数据呢?我们可以把数据保存到磁盘文件中。通过C语言的文件相关的知识,我们将会有办法把程序运行产生的数据写入我们指定的磁盘文件中。 磁盘(外存)中的文件存放的信息是持久化的,不会像运行在内存中的程序那样,在程序运行结束或突然计算机断电等情况导致数据消失。
怠惰的未禾
2023/04/27
1.1K0
C语言进阶(十四) - 文件管理
C语言文件操作
磁盘上的文件是文件,在程序设计的时候,我们一般将文件分为两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。
用户11286421
2024/09/23
2400
C语言文件操作
【C语言】文件操作详解 - 从打开到关闭
如果没有文件,我们写的程序的数据存储在电脑的内存当中,如果程序退出,内存回收,数据就丢失了,再次运行程序时,看不到上次程序的数据,如果要将数据进行持久化的保存,我们可以使用文件。
_孙同学
2024/12/25
3350
【C语言】文件操作详解 - 从打开到关闭
C语言——文件操作
我们通过文件来保留所写程序的数据,不然的话,由于程序的数据是在内存中的,当程序退出后数据就会被回收。
HZzzzzLu
2024/11/26
4300
C语言——文件操作
C语言文件读写操作(详解)
文件是一段数据的集合,这些数据可以是有规则的,也可以是无序的集合。在stdio.h有一个非常重要的东西,文件指针,每个文件都会在内存中开辟一块空间,用于存放文件的相关信息,这些信息保存在一个结构体中: struct _iobuf { char *_ptr; //指向buffer中第一个未读的字节 int _cnt; //记录剩余的未读字节的个数 char *_base;//文件的缓冲 int _flag;//打开文件的属性 int _file;//获取文件描述 int _charbuf;//单字节的缓冲,即缓冲大小仅为1个字节 int _bufsiz;//记录这个缓冲大小 char *_tmpfname;//临时文件名 }; typedef struct _iobuf FILE; FILE是一个数据结构,用于访问一个流。每个流都会对应一个FILE结构体。
全栈程序员站长
2022/09/05
2K0
C语言----文件操作
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。
Undoom
2024/09/23
2780
C语言----文件操作
【C语言】文件操作
磁盘(硬盘)上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
用户11290673
2024/09/25
2030
【C语言】文件操作
C/C++文件操作/IO流
直接点 - 磁盘上的文件,就是文件。从文件功能的角度上,文件分有数据文件和程序文件。
二肥是只大懒蓝猫
2023/05/03
8670
C/C++文件操作/IO流
相关推荐
C/C++ (stdio.h)标准库详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档