zoukankan      html  css  js  c++  java
  • C文件操作进阶

      文件操作基本步骤:首先使用fopen获得指向文件的指针,

    1.fopen

      作用:打开一个文件,返回指向该文件的指针  

      函数原型:FILE * fopen(const char *path,cost char *mode)  

      参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打开方式

      返回值:文件打开了,返回一个指向该打开文件的指针(FILE结构);文件打开失败,错误上存error code(错误代码)

    注:mode有以下值:

    r:只读方式打开,文件必须存在

    r+:可读写,必须存在

    rb+:打开二进制文件,可以读写

    rt+:打开文本文件,可读写

    w:只写,文件存在则文件长度清0,文件不存在则建立该文件

    w+:可读写,文件存在则首先将文件清空再写入,文件不存在则建立该文件

    a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留

    a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留

    wb:打开二进制文件,只写

    wb+:打开或建立二进制文件,可读写

    wt+:打开或建立文本文件,可读写

    at+:打开文本文件,可读写,写的数据加在文本末尾

    ab+:打开二进制文件,可读写,写的数据加在文件末尾

    由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

    注意:在fopen操作后要进行判断,是否文件打开,文件真正打开了才能进行后面的读或写操作,如有错误要进行错误处理

    例:FILE *fp=fopen("testfile","w+")

    2.fwrite

      作用:向文件写入一个数据块

      函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

      参数说明:第一个参数为指向文件输出地址的指针,参数二表示写入的每个数据路块的字节数,参数三表示要写入size字节数据块的个数,参数四为指向目标文件的指针。  

      返回值:实际写入的数据块的个数。

    说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
    fseek对此函数有作用,但是fwrite[1]函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
     

     3.fseek 

      作用:重定位文件内部指针

      函数原型:int fseek(FILE *stream,long offset,int framewhere)

      参数说明:第一个为文件指针,第二个是指针的偏移量,第三个是指针偏移起始位置

      返回值:成功则返回0,否则返回其他值

      偏移量的三种取值: SEEK_SET  文件头

                SEEK_CUR  当前指针位置

                SEEK_END  文件尾

    4.fread

      作用:读取文件数据块(注意:文件读取后文件内指针会随之移动

    memset

      函数原型:void *memset(void *s,int c,size_t n)
      作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

    sizeof

      作用:返回类型所占的字节数

  • 相关阅读:
    windows中echo的用法
    通过phpMyAdmin写入MySQL,获取webshell
    底部小鱼特效
    kali Linux的简单介绍
    Kali安装gmpy2
    利用kali生成字典的三种方式
    利用kali嗅探HTTP网页用户账户密码
    永恒之蓝(ms017-010)漏洞利用
    如何使用最新Microsoft Edge打开Flash页面
    结对第二次作业
  • 原文地址:https://www.cnblogs.com/2017Crown/p/7181407.html
Copyright © 2011-2022 走看看