• 【C】文件操作


    文件操作
    文件的打开

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

    文件的打开操作 fopen 打开一个文件

    (几种操作文件的组合)

    文件的关闭操作

    int fclose(FILE *fp);

    fclose 关闭一个文件 

    文件的读写操作

    读取单个字符

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

    fputc 写一个字符到文件中去 int fput(int c,FILE * fp); 

    读取字符串  

    fgets 从文件中读取一个字符串 char * fgets(char * s,int n,FILE *fp);

    从文件中读取字符串并在字符串末尾添加'',然后存入s,最多读入n-1个字符

    当读到换行符、到达文件末尾或者读满n-1个字符,函数返回该字符串的首地址

    读取失败返回空指针NULL

    因为出错和到达文件末尾都返回NULL,因此应该使用feof()和ferror()来确定函

    数fget()返回NULL的实际原因

    fgets()从指定的流读字符串,读到换行符时将换行符也作为字符串的一部分读到

    字符串中来

    fputs 写一个字符串到文件中去 int fputs(const char * s,FILE *fp);

    出现写入错误返回EOF,否则返回一个非负数

    fputs()不会在写入文件的字符串末尾加上换行符

     

    按格式读写文件

    fprintf 往文件中写格式化数据 int fprintf(FILE * fp,const char * format,...)

    第一个参数为文件指针,第二个参数是格式控制参数,第三个是输出参数列表

    fscanf 格式化读取文件中数据 int fscanf(FILE * fp,const char * format,...)

    第一个参数为文件指针,第二个参数是格式控制参数,第三个是地址参数列表

    按格式读写文件需要知道输出和地址参数,比较麻烦(个人认为)

    按数据块读写文件

    fread 以二进制形式读取文件中的数据

    unsigned int fread(void * buffer,unsigned int size,unsigned int count,FILE * fp)

    从fp所指的文件中读取数据并存储到buffer所指向的内存中

    buffer待读入数据块的起始地址

    size每个数据块的大小(待读入每个数据块的字节数)

    count最多允许读取数据块的个数

    函数返回的是实际读到的数据块个数

     fwrite 以二进制形式写数据到文件中去

    unsigned int fwrite(void * buffer,unsigned int size,unsigned int count,FILE * fp)

    buffer待输出数据块的起始地址

    size每个数据块的大小(待读入每个数据块的字节数)

    count最多允许读取数据块的个数

    函数返回的是实际读到的数据块个数

    这两个函数常于二进制文件的输入和输出

    getw 以二进制形式读取一个整数

     putw 以二进制形式存贮一个整数

     

     

    文件状态检查函数

    feof 文件结束 int feof(FILE * fp);

    ferror 文件读/写出错 int ferror(FILE *fp);

    文件出现错误函数返回非0值,否则,函数返回0

    clearerr 清除文件错误标志

    ftell 了解文件指针的当前位置 long tell(FILE * fp);

          成功返回文件当前读写位置,否则返回-1L


    文件定位函数

    rewind 反绕重置位置指针到文件首部 void rewind(FILE * fp);

    fseek 随机定位 int fseek(FILE *fp,long offset,int fromwhere);

     

    功能:将fp的文件位置指针从fromwhere开始移动offset个字节指示下一个要读取的位置
    offset(偏移量)为正向后移动 为负向前移动 要求为长整型数据(常量数据后面要加L)
    fromwhere有三种取值:SEEK_SET/0表示文件来时处 SEEK_CUR/1表示文件当前位置 SEEK_END/2表示文件结尾处

     

     

    补充:

    int fflush(FILE * fp);

    无条件地把缓冲区的所有数据写入物理设备

    每天进步一点点,不要停止前进的脚步~
  • 相关阅读:
    【Python学习之七】递归——汉诺塔问题的算法理解
    【Python学习之六】高阶函数2(map、reduce、filter、sorted)
    【Python学习之五】高级特性5(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性4(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性3(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性2(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之五】高级特性1(切片、迭代、列表生成器、生成器、迭代器)
    【Python学习之四】递归与尾递归
    Golang 调度器GPM原理与调度分配
    Mongo索引优化
  • 原文地址:https://www.cnblogs.com/myworld7/p/7096708.html
Copyright © 2020-2023  润新知