zoukankan      html  css  js  c++  java
  • 文件FILE及文件指针

    c语言的FILE(大写),其类型声明,在stdio.h中

     1 struct _iobuf {
     2         char *_ptr;
     3         int   _cnt;
     4         char *_base;
     5         int   _flag;
     6         int   _file;
     7         int   _charbuf;
     8         int   _bufsiz;
     9         char *_tmpfname;
    10         };
    11 typedef struct _iobuf FILE;

    文件指针,是指向该结构体类型的指针

    FILE *fp; //定义一个文件指针变量

    一旦通过函数打开或创建一个文件,指针指向文件,通过指针变量可以对文件进行各种操作

    文件操作之前需要打开文件,结束后需要关闭文件

    FILE *fopen(const char *filename, const char *mode);

    参数filename表示文件名,可以是相对路径,也可以是绝对路径

    参数mode表示操作模式,针对文本文件、二进制文件分别如下:

    文本文件 二进制文件 含义
    "r"或"rt" "rb" 只读打开一个文件,文件不存在,打开失败
    "r+"或"rt+"或"r+t" "rb+"或"r+b" 读写打开一个文件,文件不存在,打开失败  
    "w"或"wt" "wb" 只写创建一个新文件,文件存在,覆盖旧文件
    "w+"或"wt+"或"w+t" "wb+"或"w+b" 读写创建一个新文件,文件存在,覆盖旧文件
    "a"或"at" "ab" 追加打开一个文件,文件不存在,创建一个新文件
    "a+"或"at+"或"a+t" "ab+"或"a+b" 追加读打开一个文件,文件不存在,创建一个新文件

    试例 

    FILE *fp1,*fp2; //定义文件指针变量
    fp1=fopen("IN.TXT","r"); //打开一个(已存在的)文本文件IN.TXT
    fp2=fopen("OUT.DAT","wb"); //创建一个新二进制文件OUT.DAT

    通常,系统会为每个程序自动定义并打开三个标准文件,分别是标准输入文件stdin(键盘)、

    标准输出文件stdout(显 示器)、标准出错输出stderr(显示器),程序可直接使用它们

    //0.打开关闭文件
    FILE * fopen ( const char * filename, const char * mode );
    int fclose ( FILE * stream );
    //1.读写一个字符
    int fgetc ( FILE * stream );
    int fputc ( int character, FILE * stream );
    //2.读num-1个字符或读到回车或文件结尾,写一个字符串到文件
    char * fgets ( char * str, int num, FILE * stream );
    int fputs ( const char * str, FILE * stream );
    //3.二进制读写
    size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
    size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
    //4.格式读写
    int fscanf ( FILE * stream, const char * format, ... );
    int fprintf ( FILE * stream, const char * format, ... );
    //5.文件指针移动
    void rewind ( FILE * stream );
    int fseek ( FILE * stream, long int offset, int origin );
    long int ftell ( FILE * stream );
    int fgetpos ( FILE * stream, fpos_t * pos );
    int fsetpos ( FILE * stream, const fpos_t * pos );
  • 相关阅读:
    集合类
    对象数组的练习已经对象数组的内存图
    String字符串的遍历
    About me-关于我
    工作两周年总结
    hackrf搭配gr-mixalot唤醒沉睡多年的BP机
    电视机为什么会收到邻居游戏机画面?
    分析无线遥控器信号并制作 Hack 硬件进行攻击
    使用 Arduino 和 RC Switch 逆向遥控器
    解码无线遥控器信号的 N 种方法
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11698711.html
Copyright © 2011-2022 走看看