文件的基本知识点

本章设计的知识点

  • 文件的读操作
  • 文件的定位
  • 缓冲文件系统
  • 非缓冲文件系统

12 .1文件的简介

12.1.1 缓冲文件的定义形式如下:

FILE  *指针名;

通过文件指针可以进行文件的读、写操作

12.1.2 非缓冲文件

缓冲文件是通过文件指针实现对文件的读和写操作的
非缓冲文件是通过操作系统提供的功能实现文件的读和写的操作。
12.2 与文件有关的库函数

12.2.1 文件的打开和关闭函数

fp =fopen(文件名,文件操作方式);

文件的关闭通过fclose()函数实现,其调用形式如下

FILE *fp;
fclose(fp);

12.2.2 文件的读写函数

1、fputc()函数

调用形式

fputc(c,fp);

功能:将字符c中存储的字符写至fp所指的文件中。

2、fgetc()函数

调用形式:

c= fgetc(fp);

功能:从某一文件中读取一个字符,同时文件打开方式必须为读方式或写方式。

FILE *fp;
fp=fopen("file.txt","r");
c=fgetc(fp);

从file.txt文本文件中读取一个字符,因为位置指针没有赋值,因此读取的是该文件中的第一个字符。fgetc()函数读到文件的末尾,则会返回一个结束符EOF,其值为-1,因此如果想要读取文件中的所有内容。
上一个程序可以改为如下形式:

FILE *fp;
fp=fopen("file.txt","r");
c=fgetc(fp);
while(c!=EOF)
{
    putchar(c);
    c=fgetc(fp);
}

3、fread()函数

调用形式

fread(buff.size,count,fp);

功能:从文件中读取一个数据块,其中buf为指针类型,表示从文件中读取数据存放的地址,size表示一次读取的字节数,count表示进行多少次的读操作,fp为文件指针,指向要进行操作的文件。

struct st
{
    char name[20];
    int age;
    char sex;
    float score;
}s[10];

定义一个结构体数组s,其中包含10个元素,每一个元素都包含姓名、年龄、性别、分数等信息数据

for(i=0;i<10;i++)
fread(&s[i],sizeof(struct st),1,fp);

结构体数组s分别保存了每一个学生的信息,其中&s[i]表示第i个元素的地址,因为fread()函数是将数据写入变量地址中,因此该参数必须为变量的地址。

4、fwrite()函数

调用形式:

fwrite(buff,size,count,fp);

功能:想文件中写入一个数据块,buff为指针类型,表示向文件中写入数据的存储地址,size表示一次写入的字节数,count表示进行多少次操作,fp为文件指针,指向要进行操作的文件。

struct st
{
    char name[20];
    int age;
    char sex;
    float score;
}s[10];

上述结构已初始化,要将这10名学生的信息写入文件,

fori=0;i<10;i++)
fwrite(&s[i],sizeof(struct st),1,fp);

5、fprintf()函数

调用方式

fprintf(文件指针,格式,输出变量名)

功能:对文件进行格式化

fprintf(fp,"%d,%c",n,c);

整型变量n和字符变量c表示按%d,%c的格式写至指针fp所指的文件中。

6、fscanf()函数

调用形式:

fscanf(文件指针,格式,输入变量名)

功能:对文件进行格式化读。

fprint(fp,"%d,%c",&n,&c);

输出是要将二进制转换为字符型式

12.3.1 feof()函数

调用形式:

feof(文件指针);

判断文件指针是否到文件末尾

FILE *fp;
feof(fp);

判断文件是否移动到文件的末尾,若文件指针移动到末尾,则feof()函数的返回值为1,否则该函数的返回值为0.

12.3.2 rewind()函数

调用形式:

rewind(文件指针);

功能:使位置指针重新移动到文件的开头

rewind(fp);

通过调用rewind()函数,使指针fp指向文件的起始位置

fseek()函数和文件随机存取

调用形式:

fseek(文件指针,移动量,起始位置);

功能使位置指针指向固定的位置。

ftell()函数

调用形式:

ftell(文件指针);

功能:用于获取文件指针当前位置,其值为从文件起始处的位移量。

ftell(fp);

用于获取文件指针fp当前的位置。ftell()函数也有返回值,若函数调用出错,则返回值-1,若函数正常调用,则返回文件指针当前的位置。

出错检测函数

ferror()函数

调用形式:

ferror(文件指针)

功能:用于测试调用函数是否出错。
若ferror()函数的返回值为0,则表示没有出错,返回非0,则表示出错。每次调用一个函数时,系统都会生成一个新的ferror()函数值,因此调用函数之后必须通过ferror()函数检测返回值。

clearerr()函数

调用形式:

claarerr(文件指针)

将文件错误标识和文件结束符置0.

clearerr(fp);

若调用一个函数出错,则其返回值为非0值,
通过调用clearerr()函数即可将该值置为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值