本文已整合到C语言标准库深度解读

文章目录

  • 常量和指针
  • 文件读写
  • 文件和路径的其他操作
  • 输入输出

stdio绝对是C语言最让人脸熟的单词了,毕竟几乎每个c或者h文件都得include一下。

常量和指针

#define 功能 操作系统默认
EOF (-1) 文件结束符
BUFSIZ 1024 setbuf函数缓冲区字节数 __BUFSIZ__
FOPEN_MAX 20 系统可同时打开的文件数量 __FOPEN_MAX__
FILENAME_MAX 1024 文件名最大长度 __FILENAME_MAX__
L_tmpnam FILENAME_MAX tmpnam创建的临时文件名的最大长度 __L_tmpnam__
TMP_MAX 26 tmpnam可生成最多独立文件名

stdio.h中定义了三个FILE类型的指针,

#define  stdin   (_REENT->_stdin)
#define stdout  (_REENT->_stdout)
#define stderr  (_REENT->_stderr)

其中,_REENTreent.h_impure_ptr定义,而_impure_ptr则为_reent的指针。

_reent中定义了三个FILE型的指针__FILE *_stdin, *_stdout, *_stderr;,分别代表标准输入、标准输出和标准错误。

文件读写

操作一个文件的流程大致为:从fopen打开文件,到fread, fwrite读写文件,再到fflush强制写入缓存,最后fclose关闭文件;如果需要精确定位写入或读取的位置,可以通过fseekfgetpos

stdio中提供了这些功能:一文精通C语言文件读写

而文件结构体在文件操作流程中也至关重要:FILE结构体详解

文件和路径的其他操作

流控制

输入为FILE *stream的单参函数,EOF为文件结束标识符。

返回类型 功能
void clearerr 清除stream的文件结束和错误标识符
int feof 返回stream的文件结束标识符,若未设置,则返回0
long int ftell 返回stream的文件位置,如果发生错误,则返回-1L,全局变量errno被设置为一个正值。
void rewind 设置文件位置为stream的开头

缓存

在打开文件后还没有做其他操作的时候,可以通过ssetvbuf来设置缓冲格式,其声明为

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

其中stream为文件流;buffer为分配给用户的缓冲;size为缓冲的字节数;mode为缓冲模式,有三种

类别 说明
_IOFBF 0 全缓冲 输出时,数据在缓冲填满时被一次性写入
输入时,缓冲在请求输入且缓冲为空时被填充。
_IOLBF 1 行缓冲 输出时,在换行处或缓冲填满时写入数据
输入时,缓冲至下一个换行符
_IONBF 2 无缓冲 不使用缓冲。I/O操作即时写入,忽略buffer和size

setbufsetvbuf的一个特例,其中mode_IONBFsizeBUFSIZ

路径操作

stdio.h还提供了两个操作文件的函数,分别是删除文件remove和重命名文件rename,其声明分别为:

  • int remove(const char *filename)
  • int rename(const char *old_filename, const char *new_filename)

输入输出

stdio.h主要为输入输出提供了两组函数,一组是getput,另一组是printscan

  • C语言中的get和put
  • printf函数详解

C语言标准输入输出stdio.h相关推荐

  1. stdio.h: C++输入输出操作

    头文件:<stdio.h>.<cstdio> 1.通过"streams"来操作物理设备:如键盘.打印机.终端等. 2.流通过指针来连接"FILE& ...

  2. Ler(一) stdlib.h,stdio.h,string.h头文件

    一.定位不同 1.stdlib.h是standard library标准库头文件,定位在通用工具函数. 2.stdio.h是standard input&output标准输入输出头文件,定位在 ...

  3. stdio.h iostream.h iostream 三者

    stdio.h是C语言的东西,输入输出是这样的printf(...);, scanf(...); iostream.h是C++的东西,输入输出是这样的cout<<....;, cin> ...

  4. C语言stdio.h与stdlib.h的区别

    一.定位不同 1.stdlib.h是standard library标准库头文件,定位在通用工具函数. 2.stdio.h是standard input&output标准输入输出头文件,定位在 ...

  5. c语言标准输入输出ppt,c语言输入输出语句PPT

    <c语言输入输出语句PPT>由会员分享,可在线阅读,更多相关<c语言输入输出语句PPT(29页珍藏版)>请在人人文库网上搜索. 1.输入输出语句通常需要在程序运行过程中输入数据 ...

  6. C语言标准库stdlib.h

    本文将介绍 C语言标准库<stdlib.h> 中的 宏.函数.数据类型 在最后给出一个实例程序,尽可能运用到所有函数 宏 EXIT_SUCCESS 和 EXIT_FAILURE exit函 ...

  7. C语言的stdio.h文件

    stdio.h是C语言中的标准头文件之一,其名称全称为Standard Input and Output Header,即标准输入输出头文件.它提供了一系列输入输出函数,用于程序的输入输出操作. st ...

  8. [学习标准库]stdio.h

    本文所总结的内容是我学习头文件cstdio与stdio.h并查阅书籍和网络所得. stdio.h,应该是跟我差不多学习经历(C-->C++-->?)的人所接触到的第一个头文件,说它是最熟悉 ...

  9. c++头文件:stdio.h ,cstdio ,iostream ,bits/stdc++.h

    关于c++头文件 看到计蒜课里c++课程里用了这些头文件,并不懂什么意思,于是百度得出结果= - = 首先,stdio.h是c语言主要的一个头文件,是指 "standard input &a ...

  10. c++头文件:stdio.h ,cstdio ,iostream

    转载自:低调学习C++ 首先,stdio.h是c语言主要的一个头文件,是指 "standard input & output"(标准输入输出).而到了c++里,常用iost ...

最新文章

  1. JavaScript初学者编程题(12)
  2. 语义分割--Pixel Deconvolutional Networks
  3. mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优
  4. 智能安防市场的痛点是什么?
  5. Android Drawable 转化成 Bitmap
  6. MFC 单文档的全局变量
  7. 大数据领域33个预测,开启未知的2016
  8. IOS开发之小实例--UIImagePickerController
  9. php时间戳本周,php获取今天,昨天,本周,上周,本月,上月的起止时间戳
  10. MyBatis映射文件1(增删改、insert获取自增主键值)
  11. 方丹丹(1981-),女,就职于宁波市智慧城市规划标准发展研究院。
  12. php 弹出指定窗口大小,弹出div或者弹出新窗口的固定位置、固定大小
  13. 【渝粤教育】电大中专金融与税收 (2)_1作业 题库
  14. c语言中printf输出,C语言中printf输出的总结
  15. 计算机3c认证 标准,计算机3C认证怎么办理,检测标准是什么?
  16. 老生常谈-forwar的与redirect的区别与联系
  17. python常用单词
  18. [分块]Most Influential Pumpkin
  19. 常见的需求分析方法(产品篇)
  20. Golang 计算MD5值

热门文章

  1. 中国无线城市市场发展策略及未来前景规划报告2022年版
  2. 26 伪造ICMP数据包
  3. SQL Server触发器简单例子
  4. “几何深度学习”受爱因斯坦启示:让AI摆脱平面看到更高的维度!
  5. vijos 1066 树状数组
  6. vijos一元三次方程求解
  7. 拷贝相同属性的两个对象的属性-BeanUtils和PropertyUtils以及区别
  8. 错误解决:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to star
  9. 能源行业的作业成本法管理
  10. Visio 2010工具产品密钥