C文件流I/O操作:FILE类型

一.简介

    所谓“文件”,一般是指存在外部介质上的数据的集合,一批数据是以文件的形式存放在外部介质(如磁盘、光盘和U盘)上的,操作系统以文件为单位对数据进行管理。对用户来说,常用的文件有两大类:程序文件、数据文件。在程序运行过程中,常常需要将一些数据输出到磁盘上存起来,以后需要时再从磁盘中输入到计算机内存,这种磁盘文件就是数据文件,FILE类型操作对象就是这种数据文件。

    FILE结构体类型是ANSI C编译系统提供的以数据文件为对象的输入输出操作的结构体类型变量,亦称文件I/O类型。需要注意的是ANSI C对文件的处理方法使用的是“缓冲文件系统”,即系统自动在内存区为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。

二.入门

  步骤1:添加头文件 #include <stdio.h>

  步骤2:定义指向FILE类型的指针变量

    格式:FILE   *文件类型指针名; 

//定义指向待操作的文件的指针            
  FILE       *fp;

  步骤3:打开要操作的文件

    格式:文件类型指针 =fopen( 文件对象打开方式 );

//以输入方式打开文本/二进制文件,只读。前提是文件必须存在                  
  fp =fopen( "txtFileName", "r" );
  fp =fopen( "binFileName", "rb" );
//建立输出方式文本/二进制文件,只写。如存在此名字文件,则清除原有内容
  fp =fopen( "txtFileName", "w" );
  fp =fopen( "binFileName", "wb" );
//以输入输出方式打开文本/二进制文件,可读可写,指针指向文件头
  fp =fopen( "txtFileName", "r+" );
  fp =fopen( "binFileName", "rb+" );
//以输入输出方式打开文本/二进制文件,可读可写,指针指向文件尾
  fp =fopen( "txtFileName", "a+" );
  fp =fopen( "binFileName", "ab+" );

  步骤4:设置文件读写指针位置

   格式:ftell(文件类型指针 );                                                   //获得文件指针当前位置

    格式:fseek( 文件类型指针,位移量,参照位置值 );        //以参照位置为基础移动位移量

//将文件读/写指针移到距文件头100字节处   
  fseek( fp,  100L, SEEK_SET );                                
//将文件读/写指针从当前位置向文件尾方向移50字节
  fseek( fp,   50L, SEEK_CUR );                        
//将文件读/写指针从当前位置向文件头方向移50字节
  fseek( fp,  -50L, SEEK_CUR );
//将文件读/写指针从文件尾回移100字节
  fseek( fp, -100L, SEEK_END );

  步骤5:对文件进行读写操作

    格式:fputc字节变量文件类型指针 );

    格式:字节变量=fgetc( 文件类型指针 );

    格式:fputs/fgets字符串地址字符串长度,文件类型指针 );

    格式:fread/fwrite( 数据地址 数据长度,数据项,文件类型指针 );

//从文件中读取1个字节给ch   
  ch =fgetc( fp );                       
//将ch(单字节)值写入文件   
  fputc( ch, fp );
//从文件中读取字符串(5个字符)给str   
  fgets( str, 5, fp ); 
  fread( str, 5, 1, fp );
//将str字符串写入文件
  fputs( str, fp );
  fwrite( str, 5, 1, fp );
//从文件中读取5个指定字节长度数据给指定类型变量数组var   
  fread( var, sizeof(var[0]), 5, fp );                      
//将指定类型变量数组var的前5个元素写入文件
  fwrite( var, sizeof(var[0]), 5, fp );

  步骤6:操作结束,关闭文件   

    格式:fclose(文件类型指针);

三.进阶

  暂无

四.备注

  暂无

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

痞子衡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值