c -> 流和文件

分为输入流和输出流

  1. 输入流:调用fprintf(),puts()等会打开
  2. 输出流:调用fscanf(),gets()等会打开

缓冲区

缓冲区是内存的一段空间,当程序需要从外存中读取文件中的数据时,系统先读入足够多的数据到缓冲区中,然后程序对缓冲区中的数据进行处理。
根据缓冲区是否由系统自动提供,分为缓冲文件系统和非缓冲文件系统
早期的UNIX操作系统是非缓冲模式,被称为UNIX I/O系统或者非缓冲I/O系统
ANSI C(C89,C90)只支持缓冲文件系统。

标准流

c语言中预先定义了三种标准流 stdin,stdout,stdrr(使用很少). 这些流定义在stdio.h中,默认连接到键盘和显示器,多数系统也允许重定向到文件输入输出

  1. stdin: 调用scanf(),getchar(),gets()时会打开
  2. stdout: 调用printf(),putchar(),puts()时会打开
    stdin流和stdout流允许用户交互式运行程序,通过重定向实现
    在cmd可以通过输入 program.exe在cmd中运行,通过标准输入流从键盘输入数据,通过标准输出流把结果输出到显示器。如果使用重定向模式,则使用命令 program.exe<abc.in>abc.out,操作系统按照非交互式方式运行程序,标准输入被重定向到文件my.in,标准输出流被重定向到文件my.out

用户自定义流

当需要读写文件的时候,程序员可以使用重定向标准流到文件(如上)。还可以重新创建一个用户自定义流。

操作标准:

  1. 创建流(打开文件)
    2.判断操作成败
    3.读写
    4.关闭流

打开流

1.定义流变量

流变量是文件类型指针变量

#include<stdio.h>
FILE *fp

打开失败返回NULL
要判断下是否打开成功
结束后要关闭流 fclose();

FILE *fopen( const char * filename, const char * mode );
int fclose( FILE *fp );
int fputc( int c, FILE *fp );
int fputs( const char *s, FILE *fp );
int fprintf(FILE *fp,const char *format, ...)
int fgetc( FILE * fp );
char *fgets( char *buf, int n, FILE *fp );//n个字符
 int fscanf(FILE *fp, const char *format, ...)

mode

mode
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,131评论 0 10
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,946评论 0 5
  • 第八章 c++输入和输出流 8.1 流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出...
    CodeDove阅读 3,994评论 0 3
  • 《Linux命令行与shell脚本编程大全》,4 E -- Chapter 15 一、理解输入和输出 显示脚本输出...
    生信摆渡阅读 10,780评论 0 2
  • 第三章 文件i/o 3.1引言 不带缓冲的io(unix系统在内核中设有缓冲区,这个不带缓冲意思是用户不自己缓冲)...
    m风满楼阅读 4,589评论 0 0