基础

  1. stdio.h
  2. POSIX 国际组织来规定接口标准(不同的软件系统linux或win来加入这个标准)
  3. gun有具体的实现(gun就是unix系统C语言实现者)

macros(库变量)

描述
BUFSIZ setbuf使用的缓冲区大小
_IOFBF、_IOLBF 和 _IONBF fully buffered,line buffered,unbuffered
SEEK_CUR,SEEK_END,SEEK_SET current position,end-of-file,start-of-file
EOF 文件结束,负整数,一般为-1
NULL Null pointer
stderr、stdin 和 stdout FILE 类型的指针,分别对应于标准错误、标准输入和标准输出流
FOPEN_MAX 系统可以同时打开的文件数量
FILENAME_MAX 字符数组可以存储的文件名的最大长度
L_ctermid
L_tmpnam 由 tmpnam 函数创建的临时文件名的最大长度
TMP_MAX tmpnam 函数可生成的独特文件名的最大数量

变量

  1. 都是正整数
    变量|描述
    –|--
    FILE|和打开文件对应的结构体
    fpos_t |
    size_t |sizeof函数返回

函数

函数 描述
void clearerr(FILE *);
int fclose(FILE *);
FILE *fdopen(int, const char *);
int feof(FILE *);
int ferror(FILE *);
int fflush(FILE *);
int fgetc(FILE *);
int fgetpos(FILE *restrict, fpos_t *restrict);
char *fgets(char *restrict, int, FILE *restrict);
int fileno(FILE *);
FILE *fopen(const char *restrict, const char *restrict);
int fprintf(FILE *restrict, const char *restrict, …);
int fputc(int, FILE *);
int fputs(const char *restrict, FILE *restrict);
size_t fread(void *restrict, size_t, size_t, FILE *restrict);
FILE *freopen(const char *restrict, const char *restrict,FILE *restrict);
int fscanf(FILE *restrict, const char *restrict, …);
int fseek(FILE *, long, int);
int fsetpos(FILE *, const fpos_t *);
long ftell(FILE *);
size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);
int getc(FILE *);
int getchar(void);
FILE *popen(const char *, const char *);
int printf(const char *restrict, …);
int putc(int, FILE *);
int putchar(int);
int puts(const char *);
int remove(const char *);
int rename(const char *, const char *);
void rewind(FILE *);
int scanf(const char *restrict, …);
void setbuf(FILE *restrict, char *restrict);
int setvbuf(FILE *restrict, char *restrict, int, size_t);

参考:
https://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdio.h.html
http://www.cplusplus.com/reference/cstdio/

#pragma warning(disable:4996)#include<stdio.h>
#include<stdlib.h>void main()
{FILE *fp = fopen("./test.txt", "r");char c;while ((c = fgetc(fp)) != EOF)printf("%c", c);fclose(fp);system("pause");
}

基本上每种语言都是这样,文本文件可以显示给我们看,而二进制文件是每种语言所特有的,比如python的pickle,java的objectwrite

1)文本文件
基于字符编码,常见编码有ASCII、UNICODE等
一般可以使用文本编辑器直接打开
数5678的以ASCII存储形式(ASCII码)为:
00110101 00110110 00110111 00111000

2)二进制文件
基于值编码,自己根据具体应用,指定某个值是什么意思
把内存中的数据按其在内存中的存储形式原样输出到磁盘上
数5678的存储形式(二进制码)为:00010110 00101110

typedef struct
{short           level; //缓冲区"满"或者"空"的程度 unsigned        flags; //文件状态标志 char            fd;        //文件描述符unsigned char   hold;    //如无缓冲区不读取字符short           bsize;  //缓冲区的大小unsigned char   *buffer;//数据缓冲区的位置 unsigned        ar;   //指针,当前的指向 unsigned        istemp;  //临时文件,指示器short           token; //用于有效性的检查
}FILE;

声明FILE结构体类型的信息包含在头文件“stdio.h”中,一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量。通过文件指针就可对它所指的文件进行各种操作。

C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:
stdin: 标准输入,默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据。
stdout:标准输出,默认为当前终端(屏幕),我们使用的printf、puts函数默认输出信息到此终端。
stderr:标准出错,默认为当前终端(屏幕),我们使用的perror函数默认输出信息到此终端。

C语言中,EOF表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。

C语言 FileStreaming(文件流)相关推荐

  1. java利用循环打印AVA,JAVA语言-AVA文件流

    文件流 使用File类操作文件或目录属性 创建一个File对象的语法格式:File f = new File("E://T56.txt"); f.exists()  判断这个文件是 ...

  2. c++语言文件流,C++ IO类、文件输入输出、string流详细讲解

    新的C++标准中有三分之二的内容都是描述标准库.接下来重点学习其中几种核心库设施,这些是应该熟练掌握的. 标准库的核心是很多容器类(顺序容器和关联容器等)和一簇泛型算法(该类算法通常在顺序容器一定范围 ...

  3. c语言中把文件看成什么流,C语言中的文件流

    所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3.mp4.txt.bmp.jpg.exe.rmvb等等.这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中 ...

  4. 02功能之读写文件流操作(C语言实现读取文件指定一行)

    02功能之读写文件流操作(C语言实现读取文件指定一行) 1 C语言读取文件指定一行 // 读取文件指定一行 int ReadLine1(const char *fileName, char outBu ...

  5. c语言 文件流 输出数据类型,总结C++中输入输出流及文件流操作

    当程序员在编写程序的时候,最不可分割的是对文件做的相应的操作,总结C++中输入输出流及文件流操作大家都了解吗?想要了解的朋友,就随爱站技术频道小编来看看吧. 1.流的控制 iomanip        ...

  6. c语言读文件空格间隔,c语言文件流实现按单个词读取(以空格、分号等作间隔)...

    c语言文件流实现按词读取(以空格.分号等作间隔) 1.基本描述 在之前的作业中,认真编写代码,从中发现不少知识积累上的欠缺.编程中使用到的c语言文件读取,要求是按照获取到一个完整的词,并对其进行处理. ...

  7. Go语言基础(10)-- 文件流

    十.文件流 10.1.读取文件 10.1.1.打开文件/关闭文件 os.Open()函数能够打开一文件,返回一个 ***File** 和一个**err**,对得到的文件实例调用close()方法能够关 ...

  8. Linux C语言 fileno(返回文件流所使用的文件描述词)

    fileno(返回文件流所使用的文件描述词) 相关函数 open,fopen 表头文件 #include<stdio.h> 定义函数 int fileno(FILE * stream); ...

  9. C语言fclose()函数:关闭文件流

    头文件:#include <stdio.h> fclose()函数用来关闭当前文件流,其原型为:     int fclose(FILE * stream); [参数]stream为文件流 ...

最新文章

  1. nodejs 根据坐标 标记图片上的姓名列
  2. 【采用】机器学习在金融大数据风险建模中的应用
  3. 服务器系统由32位的吗,云服务器有Windows32位系统吗
  4. 科大星云诗社动态20210217
  5. oracle - emctl start dbconsole
  6. jzoj3738-[NOI2014模拟7.11]理想城市(city)【树,模型转换】
  7. Jenkins环境搭建和部署项目的过程
  8. 笔记本电脑键盘切换_2019年最好的2500元以内的笔记本电脑
  9. 20191130每日一句
  10. java设计模式之用王者荣耀打开观察者模式(附代码实例)每天一学设计模式
  11. 联机侠控制台JAVA_联机侠控制台常见问题 | 我的世界 | MC世界侠
  12. 非网络打印机/扫描仪无线解决方案
  13. 腾讯云服务器搭建小皮面板phpstudy教程
  14. 第二版 手把手教你如何建立自己的Linux系统
  15. 【手把手 带你准备电赛】解答小课堂——串口通信和串行通信
  16. 用Python把20年的GDP、人口以及房价数据进行了可视化
  17. 基于C#的网站地图制作
  18. java中十六进制数_Java中的十六进制到整数
  19. VR这张旧船票,能否登上元宇宙这艘宇宙飞船?
  20. 结婚吉日怎样挑选?好好把握幸福启程

热门文章

  1. laravel 模型里自定义属性_关于Laravel 7 的简单隐式路由模型绑定
  2. python使用格式化教程_软件测试教程之python格式化输出format用法
  3. Python+django网页设计入门(11):在线考试与自动评分
  4. Python多线程编程中使用Barrier对象进行同步
  5. 妙用Python内置函数int()快速计算等比数列前n项和
  6. python并行线程倒计时_[python 并行2]线程
  7. C++ 泛型模板进阶
  8. 块级、行内元素水平垂直居中方法
  9. 多系统引导工具支持Linux,多系统引导工具(BootThink)
  10. if name==main是什么意思_VLOOKUP反向查找中的IF({1,0}是什么意思?