文件的有关概念

  • 什么是文件?
    • 文件是存储在外存储器上的数据的集合;
  • 输入输出流:
    • 针对文件中的数据进行输出(读取),输入(写入),类似于水流由一个地方流向另一个地方,所以形象的数据的输入输操作称之为输入输出流;
  • 文件的分类:
    • 1、文本文件(ASCII文件):数据按照字符存储方式存储的文件
    • 2、二进制文件: 按照数据在内存中的存储方式存储的文件;
  • 文件缓冲机制:
    • ANSI C语言 对文件的操作采用文件缓冲机制;
      • 系统会为每一个正在操作的文件创建文件(内存)缓冲区,针对文件中的数据操作都是在 文件缓冲区内进行的
  • FILE * 指针 (文件类型指针)
    • FILE 系统提供 的一个结构体,结构体成员存储文件信息,(文件名,状态信息…);
    • 用于接收文件缓冲区的地址,文件操作其实就是要利用该指针进行的。

image.png

文件的打开与关闭

  • 打开文件:
    • FILE fopen(const char path, const char * mode);
  • 文件操作步骤:

    • 打开文件: 为待操作的文件创建文件缓冲区,返回缓冲区首地址;
    • 文件操作(读,写);数据操作
    • 关闭文件: 回写缓冲区数据,回收缓冲区。

      文件读写操作:

      读操作

      • 从文件中读取一个字符
        • int fgetc(FILE *fp);

从文件中读取一个字符串

  1. - int fgets(char *s,int size,FILE *fp);
  2. - 从文件中读取一块指定数量的数据
  3. - size_t fread (void * ptr,size_t size, size_t count, FILE *fp);
  4. - 文件流中读取数据
  5. - int fscanf(FILE *stream, const char *format, ...);

写操作

     - 向文件中写入一个字符
        - int fputc(int ch,FILE *fp);
     - 向文件中写入一个字符串
        - int  fputs(char *s,FILE *fp);
     - 向文件中写入一块指定数量的数据
        - size_t    fwrite(void * ptr,size_t   size,   size_t  count, FILE *fp);
           - *ptr写入数据的位置
           - size 以多少个字节位单位读取
           - count  读取多少个单位的数据
           - *fp   读取数据的文件位置
        - int fprintf( FILE *stream, const char *format, ... );

文件位置指针

  • 是系统一个隐含的指针,指向于目前数据的读取位置,如果读取完当前数据文件位置指针会向后依次移动,下次读写数据, 就从文件位置指针指向的位置开始
    • 文件的顺序读写
  • 按照字节(物理)位置顺序移动
    • 文件的随机读取
  • 可以对任意位置上的数据进行访问。
  • rewind()
  • int fseek(FILE *fp ,long offset,int whence);
    • fssek(文件指针,位移量,起始位置);C语言文件流(2021.6.4) - 图2
  • long ftell(FILE *fp);//获取当前文件位置