C IO操作

文件指针

文件指针是一个指向文件有关信息的指针,这些信息包括文件名、状态和当前位置,它们保存在一个结构体变量中。在使用文件时需要在内存中为其分配空间,用来存放文件的基本信息。该结构体类型是由系统定义的,C语言规定该类型为FILE型

typedef struct
{
short level;
unsigned flags;
char fd;
unsigned char hold;
short bsize;
unsigned char *buffer;
unsigned ar *curp;
unsigned istemp;
short token;
}FILE;

FILE*fp;

文件打开

fopen函数用来打开一个文件,打开文件的操作就是创建一个流。fopen函数的原型在stdio.h中,

FILE *fp;
fp=fopen(文件名,使用文件方式);

其中,“文件名”是将要被打开文件的文件名,“使用文件方式”是指
对打开的文件要进行读还是写。使用文件方式如表所示。

如果使用fopen函数打开文件成功,则返回一个有确定指向的FILE
类型指针;若打开失败,则返回NULL。通常打开失败的原因有以下方
面:
1、指定的盘符或路径不存在。
2、文件名中含有无效字符。
3、以r模式打开一个不存在的文件。

文件的关闭

fclose(文件指针);

fputc函数

ch=fputc(ch,fp);

该函数的作用是把一个字符写到磁盘文件(fp所指向的是文件)中
去。其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字
符变量。fp是文件指针变量。如果函数输出成功,则返回值就是输出的
字符;如果输出失败,则返回EOF。

fgetc函数

ch=fgetc(fp);

该函数的作用是从指定的文件(fp指向的文件)读入一个字符赋给
ch。需要注意的是,该文件必须是以读或读写的方式打开。当函数遇到
文件结束符时将返回一个文件结束标志EOF。

fputs函数

fputs(字符串,文件指针)

该函数的作用是向指定的文件写入一个字符串,其中字符串可以是
字符串常量,也可以是字符数组名、指针或变量。

fgets函数

fgets(字符数组名,n,文件指针);

该函数的作用是从指定的文件中读一个字符串到字符数组中。n表
示所得到的字符串中字符的个数(包含“\0”)。

fprintf函数

ch=fprintf(文件类型指针,格式字符串,输出列表);

fprintf(fp,"%d",i);

它的作用是将整型变量i的值以“%d”的格式输出到fp指向的文件
中。

fscanf函数

fscanf(文件类型指针,格式字符串,输入列表);

fscanf(fp,"%d",&i);

它的作用是读入fp所指向的文件中的i的值。

文件的定位

fseek函数

借助缓冲型I/O系统中的fseek函数可以完成随机读写操作。fseek函
数的一般形式如下:
fseek(文件类型指针,位移量,起始点);

该函数的作用是移动文件内部位置指针。其中,“文件类型指针”指
向被移动的文件;“位移量”表示移动的字节数,要求位移量是long型数
据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,
要求加后缀“L”;“起始点”表示从何处开始计算位移量,规定的起始点
有文件首、文件当前位置和文件尾3种,其表示方法如表

表示将位置指针从当前位置向后退20个字节。
说明   fseek函数一般用于二进制文件。在文本文件中由于要进
行转换,往往计算的位置会出现错误。

rewind函数

前面讲过了fseek函数,这里将要介绍的rewind函数也能起到定位文
件指针的作用,从而达到随机读写文件的目的。rewind函数的一般形式
如下:
int rewind(文件类型指针)
该函数的作用是使位置指针重新返回文件的开头,该函数没有返回
值。

ftell函数

ftell函数的一般形式如下:
long ftell(文件类型指针)
该函数的作用是得到流式文件中的当前位置,用相对于文件开头的
位移量来表示。当ftell函数返回值为-1L时,表示出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值