【C语言】文件操作

目录

一、文件的有关概念

1.1 文件的概念

1.2 文件的分类

1.3 文件缓冲区 

1.4 文件指针

二、文件的打开和关闭

2.1文件的打开

2.2文件的关闭

三、文件读写

3.1 字符读写函数:fgetc 和 fputc

3.1.1 fputc函数

3.1.2 fgetc函数

3.2 文件位置指针

3.3文件结束判断函数

3.4 字符串的读写函数fputs和fgets

3.4.1 fputs 函数        

3.4.2 gets 函数    

3.5 信息的格式化读/写

3.5.1 fprintf()函数

3.5.2 fscanf 函数

3.6. fread()、fwrite()函数

3.6.1 fread函数的使用

3.6.2 fwrite函数的使用


一、文件的有关概念

1.1 文件的概念

        文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。

        特点:数据永久存放,需要时被方便的访问。

1.2 文件的分类

        根据数据的组织形式分类:

        文本文件: ASCII文件,每个字节存放一个字符的ASCII码,代表一个字符。

        二进制文件:数据按其在内存中的存储形式原样存放。

        两种文件在内存中的存放形式:

        例如整数 int a=1025,这两种文件的存储形式是不同的

        两种存储格式的区别:

        二进制文件的存储形式与数据在内存中的存储形式相同,读写是位复制,不需要转换,传输效率高,节省外存空间。   ASCII码文件是以字符形式存储,读写需要转换,传输效率低,占用外存空间较大。

1.3 文件缓冲区 

        ANSI C标准采用”缓冲文件系统”处理文件,所谓缓冲文件系统是指系统自动第在内存区为每一个正在使用的文件开辟一个”文件缓冲区”。

        读文件是从磁盘读出数据存入内存。首先从磁盘读出一批数据送到文件缓冲区,然后从文件缓冲区取出数据存入内存。写文件是从内存向磁盘输出数据。首先将内存中的数据送到文件缓冲区,待文件缓冲区满,写入磁盘。

1.4 文件指针

        每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的有关信息(文件名\文件状态及文件当前位置等),这些信息保存在一个结构体变量中。

typedef struct  {
        int                      level;                   /* 缓冲区的空满程度 */
        unsigned           flags;                   /* 文件状态标志  */
        char                   fd;                       /* 文件描述符        */
        unsigned char   hold;                   /* 如无缓冲区不读取字符   */
        int                      bsize;                   /* 缓冲区大小               */
        unsigned char   _FAR *buffer;   /* 数据缓冲区位置       */
        unsigned char   _FAR *curp;     /* 指针,当前的指向   */
        unsigned           istemp;                /* 临时文件,指示器  */
        short                token;                   /* 有效性检验 */
}  FILE;                                                 /* 指定新类型名为FILE    */

        定义文件型指针变量  FILE *fp;

         fp是一个指向FILE类型结构体的指针变量。可以使fp指向某一个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。也就是说,通过文件指针变量能够找到与它相关的文件。

二、文件的打开和关闭

        和其他高级语言一样,对文件读写之前应该“打开”该文件,在使用结束之后应关闭该文件。 “打开”:是指为文件建立相应的信息区(用来存放有关文件的信息)和文件缓冲区(用来存放输入输出的数据),并建立文件与它们之间的联系. “关闭”:只指撤消文件信息区和文件缓冲区,断开文件与内存之间的联系。

2.1文件的打开

        FILE *fp; /*定义文件型指针变量*/ fp=fopen(文件名,使用文件方式);  /*使指针变量指向打开的文件的信息区*/

        例如: fp=fopen("a1","r"); /*表示要打开名字为a1的文件,使用文件方式为“读入”,同时带回指向a1文件的指针并赋给fp,这样fp和文件a1相联系了*/

FILE *fp1,*fp2,*fp3;
fp1=fopen(“abc”,”r”);
fp2=fopen(“d:\\mydoc\\stu.dat”,”r”);
fp3=fopen=(“a1.txt”,”r”);

        打开文件时通知编译系统三个信息:需要打开的文件名、文件的使用方法、文件指针

        如果函数调用成功,fopen函数的返回值是指向该文件的指针,程序可以使用这个指针对所打开的文件进行读写操作。否则返回一个空指针—NULL;

if ((fp=fopen("e:\001\file1.txt","w"))==NULL)
{printf("file1.txt 不能打开!\n");
exit(1);
} 

        对于读写模式,打开文件时,当前文件指针指向文件

  • 25
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨淅淅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值