文件的操作

文件的打开

文件的打开

文件在进行读写操作前要先打开,打开文件就是建立文件的各种有关信息,并将文件指针指向该文件,要打开指定的文件可使用fopen函数。

fopen 函数原型:

FILE *fopen(char* filename,char *mode);

功能:使用mode 模式打开指定的filename文件。如打开文件成功,则返回一个FILE类型的指针,如打开文件失败,则返回NULL。

其中,第一个参数filename用来设定打开的文件。第二个参数mode 用来设定要打开的文件类型和指定文件的访问模式。

文件打开的一般方式

FILE *fp;
fp=fopen("text.txt","r");
if(fp==NULL)
{
    printf("打开文件失败");
    exit(1);
}

文件的关闭

文件的关闭

文件打开后若不继续使用,则使用fclose()函数将指定的文件关闭,并将FILE文件指针的相关资源及所占用的缓冲区归还给系统

fclose 函数的原型

int fclose(FILE *fp);

其功能是,将文件指针fp所指的文件关闭,若返回0,则表示关闭成功,若返回非0值,则表示有错误发生。

文件的顺序读写

文件的读写是通过读写函数实现的,他们是:

单字符读写函数分别是:fgetc ,fputc.

字符串读写函数分别是:fgets,fputs.

格式化读写函数分别是:fscanf,fprintf.

数据块读写函数分别是: fread,fwrite.

1.单字符读写函数

字符读写函数是以字符为单位的读写函数。每次可从文件中读出或向文件写入一个字符。

(1)读单字符函数

fgetc()函数原型

int fgetc(FILE *fp);

其功能是,读取文件指针fp目前所指文件位置中的字符,读取完毕,文件指针自动往下移一个字符位置,若文件指针已经到文件结尾,返回-1.

(2) 写单字符函数

fputc()函数原型

int fputc(char ch,FILE *fp);

其功能是,把字符ch写入文件指针fp所指向文件的位置,成功时返回字符的ASCII码,失败时返回EOF

2.字符串读写函数

(1)读字符串函数fgets()

函数原型

char fgets(char *str,int n,FILE *fp);

其功能是,在文件指针fp所指文件位置读取n个字符并放入str字符数组中,如果读不到字符串,则返回NULL。

(2) 写字符串函数fputs()

函数原型

int fputs(char *str,FILE *fp);

其功能是:将字符串str 写入文件指针fp所指的文件位置。写入数据成功时返回非0值,写入失败时返回EOF。

3.格式化字符串读写函数

(1) 格式化字符串读函数

函数原型

int fscanf(FILE *fp,"格式化字符串",输入项地址表)

其功能是,从文件指针fp所指向的文件中按照格式字符串指定的格式,将文件中的数据送到输入项地址表中。若读取数据成功会返回所读取数据的个数,并将数据按照指定格式存入内存中的变量或数组中,文件指针自动向下移动,若读取失败则返回EOF

(2) 格式化字符串写函数

函数原型

int fprintf(FILE *FP,"格式化字符串",输入项地址表);

其功能是:将输入项表中的变量值按照格式字符串指定的格式输入到文件指针 fp所指的文件位置。

4.数据块读写操作

(1)数据块读函数 fread()

函数原型:

int fread(void *buffer,int size ,int count ,FILE *fp);

其功能是:从文件指针fp所指向的文件的当前位置开始,一次读入size 个字节,重复count次,并将读取到的数据存到buffer开始的内存区中,同时将读写位置指针后移size*count 次。该函数的返回值是实际读取的count值。

(2)数据块写函数fwrite()

函数原型

int fwrite(void *buffer,int size ,int count ,FILE*fp);

其功能是,从buffer所指向的内存区开始,一次输出size 个字节,重复count 次,并将输出的数据存入到fp所指向的文件中,同时将读写位置指针后移size*count 次。

文件的随机读写

1 函数 rewind()

函数原型:

void rewind(FILE *fp);

其功能是,将文件内部的移动指针移动到文件的开始位置。

2.函数fseek()

函数原型:

int fseek(FILE *fp,long offset,int whence);

其功能是:文件指针由whence 地址移到offset的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值