千家信息网

C语言文件的操作实例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了C语言文件的操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言文件的操作实例分析文章都会有所收获,下面我们一起来看看吧。一、为什么使用文件
千家信息网最后更新 2026年11月02日C语言文件的操作实例分析

这篇文章主要介绍了C语言文件的操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言文件的操作实例分析文章都会有所收获,下面我们一起来看看吧。

    一、为什么使用文件

    当我们写一些项目的时候,我们应该要把写的数据存储起来。只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据的持久化的问题,为我们一般数据持久化的方法有,把数据存在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

    二、什么是文件

    磁盘上的文件是文件。

    在程序设计中,我们一般说的文件有两种:程序文件、数据文件.

    1.程序文件

    包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。

    2.数据文件

    文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

    3.文件名

    一个文件要有一个唯一的文件标识,以便用户识别和引用。

    文件名的组成:文件路径 + 文件名主干 + 文件后缀

    例如:c:\cyuyan\test.txt

    三、文件指针

    每一个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(文件名字,文件状态及文件当前的位置等)。这些信息保存在一个结构体变量中。该结构体由系统声明,取名为FILE.

    VS2013编译环境提供的stdio.h头文件中有以下的文件类型声明:

    struct _iobuf {    char *_ptr;    int  _cnt;    char *_base;    int  _flag;    int  _file;    int  _charbuf;    int  _bufsiz;    char *_tmpfname;   };typedef struct _iobuf FILE;

    不同的C编译器的FILE类型包含的内容不完全相同,大同小异。

    创建一个FILE*的指针变量:

    FILE* pf;//文件指针变量

    定义的pf是一个指向FILE类型数据的指针变量。可以使得pf指向某个文件的文件信息区(结构体变量)。通过该文件信息区中的信息就能够访问该文件。即:通过文件指针变量能够找到与它关联的文件。

    四、文件的打开和关闭

    在写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,相当于建立了指针和文件的关系。

    fopen - 打开文件

    fclose - 关闭文件 (文件使用之后一定要关闭,防止数据丢失)

    //打开文件FILE *fopen( const char *filename, const char *mode );//filename - 要打开文件名    mode - 文件访问模式//关闭文件int fclose( FILE *stream );

    常用的文件访问模式如下:

    例如:

    #include#includeint main(){        //打开文件        FILE* pf = fopen("data.txt", "w");        if (pf == NULL)        {                printf("%s\n", strerror(errno));                return;        }        //使用文件                //关闭文件        fclose(pf);        pf = NULL;        return 0;}

    五、文件的顺序读写

    函数详解:

    fgetc - 从流中读取一个字符int fgetc( FILE *stream );stream - 指向FILE结构的指针fputc - 将字符写入流int fputc( int c, FILE *stream );c - 要写入的字符    stream - 指向FILE结构的指针

    fgets - 从流中获取一个字符串char *fgets( char *string, int n, FILE *stream );string - 数据的储存位置   n - 要读取的最大字符数  stream - 指向FILE结构的指针fputs - 将字符串写入流int fputs( const char *string, FILE *stream );string - 输出字符串   stream - 指向FILE结构的指针

    fscanf - 从流中读取格式化的数据
    int fscanf( FILE *stream, const char *format [, argument ]... );
    stream - 指向FILE结构的指针 format - 格式控制字符串 argument - 可选参数

    fprintf - 将格式化的数据打印到流中
    int fprintf( FILE *stream, const char *format [, argument ]...);
    stream - 指向FILE结构的指针 format - 格式控制字符串 argument - 可选参数

    fread - 从文件中读二进制数据
    size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
    buffer - 数据的储存位置 size - 项目大小(以字节为单位) count - 要读取的最大项数 stream - 指向FILE结构的指针

    fwrite - 以二进制形式向流中写入数据
    size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
    buffer - 数据的储存位置 size - 项目大小(以字节为单位) count - 要读取的最大项数 stream - 指向FILE结构的指针

    scanf - 从标准输入流(stdin)上进行格式化输入的函数

    printf - 向标准输出流(stdout)上进行格式化输出的函数

    fscanf - 可以从标准输入流(stdin)/指定的文件流上读取格式化的数据

    fprintf - 把数据按照格式化的方式输出到标准输出流(stdout)/指定的文件流

    sscanf - 可以从一个字符串中提取(转化)出格式化数据

    sprintf - 把一个格式化的数据转化成字符串

    六、文件的随机读写

    fseek

    根据文件指针的位置和偏移量来定位文件指针

    int fseek( FILE *stream, long offset, int origin ); //将文件指针移动到指定位置stream - 指向FILE结构的指针  offset - 起始字节数  origin - 起始位置

    fseek的使用

    ftell

    返回文件指针相对于起始位置的偏移量

    long ftell( FILE *stream );

    ftell的使用:

    rewind

    让文件指针的位置回到文件的起始位置

    void rewind( FILE *stream );

    七、文件结束判定

    feof函数:

    注意:在文件读取过程中,不能用feof函数的返回值直接用来判断文件是否结束。而是用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。

    1.文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)。

    • fgetc判断返回值是否为EOF.

    • fgets判断返回值是否为NULL.

    2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。

    • fread判断返回值是否小于实际要读的个数.

    文本文件的例子:

    二进制文件的例子:

    关于"C语言文件的操作实例分析"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C语言文件的操作实例分析"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

    文件 数据 指针 指向 结构 字符 位置 格式 变量 字符串 程序 输出 信息 内容 函数 实例 实例分析 语言 分析 二进制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网科技企业 南京欣网互联网络科技有限公司 伟宏互联网科技 中国互联网科技工作委员会毛军 金融科技创新监管互联网金融 互联网金融与金融科技 智网互联网科技 奇酷互联网络科技 广州凡科互联网科技 互联网科技博客 一五八零互联网科技 互联网科技公司需要的职位 中国的互联网科技企业的崛起 成都互联网科技公司100强 米聚互联网科技南京有限公司排面 长沙茂晟互联网科技有限公司 美国互联网科技公司 互联网科技包装股份有限公司上市 福仕德教育科技互联网 苏州找大状互联网科技有限公司 重生之互联网科技帝国 互联网科技会 互联网金融 科技金融 上海万想互联网科技 济南和联互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 崇明区互联网教育科技售后服务 移动互联网年度科技创新 同城互联网络科技
    0