千家信息网

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

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍了C语言文件的操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言文件的操作实例分析文章都会有所收获,下面我们一起来看看吧。一、为什么使用文件
千家信息网最后更新 2024年09月22日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安全错误 数据库的锁怎样保障安全 网络安全法要求有关单位 数据库相关技术研究 统信系统安装神舟通用数据库 企业网络安全管理如何维护 网络安全视频的第五空间 端游天刀大区服务器地址 东软网络安全人事助理 网络安全知识辩论 构筑网络安全屏障 计算机网络技术专业劳动调查报告 数据库的物理结构设计论文格式 网络安全宣传周上海地区主场 网络安全素养文章 软件开发属于销售服务吗 网络安全涉及范围包括哪些 服务器文件管理安卓 软件开发人员岗位设置 民间法律法规数据库最新规定 报表不能进行修改数据库 黑魂3的 捏脸数据库 广东计算机应用软件开发报价 通信网络安全竞赛 龙粳62国家数据库 武汉易企营网络技术有限公司 阿里云网络技术有限公司股票 c# txt做数据库 出版行业网络安全 js获取单个数据库字段 西安帕克因互联网科技怎么样 迁西项目网络技术诚信合作
    0