C语言文件操作函数

文件操作函数

一.打开文件——fopen函数:

1.函数原型:

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

2.函数功能:

使用mode模式打开指定的filename文件。

3.返回值:

如果打开文件成功,返回一个FILE类型的指针;
如果打开失败,返回NULL。

4.参数:

第一个参数filename指打开的文件名。
	若打开的文件与执行文件路径相同(即同一文件夹),
	只写文件名即可。
	如若不在同一路径,则需要指定打开文件的绝对路径。
第二个参数mode指打开的文件类型和指定文件的访问模式。
例如:
FILE *fp;
fp=fopen("test.txt","r");//表示以只读方式打开一个和可执行文件相同路径(同一文件夹)的文本文件test.txt。
也可:
FILE *fp;
fp=fopen("c:/Program Files/test.txt","r");//表示以只读方式打开一个c盘下Program Files文件夹中的文本文件test.txt。
	(其中斜杠“/”可以换成两个反斜杠“\\")

注:文件中的访问模式
在这里插入图片描述

二.关闭文件——fclose函数:

1.函数原型:

int fclose(FILE *fp);

2.函数功能:

将文件指针fp所指的文件关闭。

3.返回值:

返回0,代表关闭成功;
返回非0,则代表有错误发生。

三.获取文件属性——fileno函数和filelength函数:

打开一个文件时,系统都会自动赋予该文件一个文件描述字(File Handle Number),在程序中若使用该文件描述字来代替对应的文件,就可以在程序中以文件描述字取代该文件的全名。其作用效果相当于#define定义符号常量一样,让引用文件名更为方便,不用多次采用文件名。

1.fileno函数:

1).函数原型:
	int fileno(FILE *fp);
2).函数功能:
返回所打开文件指针fp所指文件对应的文件描述(handle_no)。	
所在头文件stdlib.h

2.filelength函数:

1).函数原型:
long filelength(int handle_no);
2).函数功能:
返回文件描述字(handle_no)对应的文件大小,以字节为单位。
所在头文件io.h
例:取得e盘下code文件夹下的test.txt文件的大小
FILE *fp;
int fno,fsize;
fp=fopen("e:/code/test.text","r");
fno=fileno(fp);
fsize=filelength(fno);
fclose(fp);

四.顺序读写文件——

单字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs
格式化读写函数:fscanf和fprintf
数据块读写函数:fread和fwrite

1.单字符读写函数:

(1)读单字符函数——fgetc函数
·函数原型:
int fgetc(FILE *fp);
·函数功能:
读取文件指针fp目前所指文件位置中的字符,
读取完毕,文件指针自动往下移动一个字符位置,
若文件指针已经到文件结尾,返回-1。
例如:ch=fgetc(fp);//其意义是从fp所指文件中读取一个字符并送入ch中
·注意:
调用fgetc函数,文件必须是以读或者读写方式打开的。
在文件内部有一个位置指针。用来指向文件当前读写位置。
文件打开时它指向文件第一个字节使用fgetc后,
该指针自动向后移动一个字节。
文件内部的位置指针用以指示文件内部当前读写的位置,
每读写一次,指针自动向后移动。
而且它并不用定义,是由系统自己设置的。
(2).写单字符函数——fputc函数
·函数原型:
int fputc(char ch,FILE *fp);
·函数功能:
把字符ch写入文件指针fp所指文件的位置,
成功是返回字符的ASCII码,
失败时返回EOF(在stdio.h中符号常量EOF的值等于-1)
例如:
FILE *fp;
fputc('a',fp);//其意义是把字符写入fp所指向的文件中
·注意:
调用fputc函数,文件打开方式包含写入
每写一个字符,文件内部位置指针自动向后移动一个字节。
fputc函数的返回值,如果成功写入,就返回写入的字符,
否则返回一个EOF。

2.字符串读写函数:

(1).读字符串函数——fgets函数
·函数原型:
char *fgets(char *str,int n,FILE *fp);
·函数功能:
在文件指针fp所指文件位置读取n个字符并放入str字符数组中。
如果读取不到就返回NULL。
例如:
FILE *fp;
char str[10];
fgets(str,10,fp);
(2).写字符串函数——fputs函数
·函数原型:
int fputs(char *str,FILE *fp);
·函数功能:
将字符串str,写入文件指针fp所指文件的位置。
写入成功时返回非0,写入失败时返回EOF。
例如:
FILE *fp;
char str[10]={0123456789;
fputs(str,fp);

3.格式化读写函数:

(1).格式化字符串读函数——fscanf函数
·函数原型:
int fscanf(FILE *fp,"格式化字符串”,【输入项地址表】);
·函数功能:
从文件指针fp所指向的文件中按照格式字符串指定的格式
将文件中的数据送到输入项地址表中。
读取成功,会返回读取数据的个数,若失败,返回0。
例如:     
char num[20],name[40],sex[5];
FIEL *fp;
fp=fopen("test.txt","r");
fscanf(fp,"%s  %s  %s",num,name,sex);
(2).格式化字符串写函数——fprintf函数
·函数原型:
int fprintf(FILE *fp,"格式化字符串",【输出项地址表】);
·函数功能:
将输出项表中的变量值,按照格式字符串指定的格式
输出到文件指针fp所指向的文件位置。
例如:
char num[20]={1234567890},name[40]="XX",sex[5]=“sex";
FIEL *fp;
fp=fopen("test.txt","a");
fscanf(fp,"%s  %s  %s",num,name,sex);
注意:
在字符串读写函数中,空格作为检测标志,它并不能被写入。
那么需要解决空格写入,可以通过fputc函数,fputs函数。
或者通过数据块读写函数。

4.数据块读写函数:(注意:它以二进制文件的方式来写入和输出数据的,Windows直接打开文件是看不到的)

(1).数据块读函数——fread函数:
·函数原型:
int fread(void *buffer,int size,int count,FILE *fp);
·函数功能:
从文件指针fp所指向的文件的当前位置开始,
一次读入size个字节,重复count次,
并将读到的数据存到buffer开始的内存区中,
同时,读写位置指针后移。
返回值就是实际读取的count值。
例如:
float fa[5];
fread(fa,4,5,fp);//从fp所指文件中,每次读取4个字节(一个实数),送入到实型数组fa中,连续五次,即读五个实数到fa中。
(2).数据块写函数——fwrite函数:
·函数原型:
int fwrite(void *buffer,int size,int count,FILE *fp);
·函数功能:
从buffer所指向的内存区开始,一次输出size个字节,
重复count次,并将输出的数据存到fp所指向的文件中,
同时,读写位置指针后移。
例如:
float fa[5];
fwrite(fa,4,5,fp);//从实型数组fa中,每次读4个字节(一个实数),写入fp所指的文件中,连续5次,即写五个实数到fp所指文件中。

五.随机写入文件——rewind函数、fseek函数和ftell函数

1.rewind函数:

·函数原型:
void rewind(FILE *fp);
·函数功能:
将文件内部的位置指针移到文件的开始位置

2.fseek函数:

·函数原型:
int fseek(FILE *fp,long offset,int whence);
·函数功能:
文件指针由whence的地址移到offset的地址。
例如:
rewind(fp);
fseek(fp,sizeof(struct stu)*n,0);//把文件指针由0地址,往后移sizeof(struct stu)*n地址,即表示文件指针后移n个数据记录的地址。

3.ftell函数:

·函数原型:
long ftell(FILE *fp);
·函数功能:
得到流式文件的当前位置,
用相对文件开头的位移量(字节)来表示。
如果返回值为-1L,表示出错。
例如:
i=ftell(fp);//获取fp指向的文件的当前读写位置,并将其复制给i。

六.出错检查函数——feof函数、ferror函数和clearerr函数

1.feof函数:

·函数原型:
int feof(FILE *fp);
·函数功能:
判断文件指针fp是否处于文件结束位置。
是->返回1.
否->返回0.

2.ferror函数:

·函数原型;
int ferror(FILE *fp);
·函数功能:
检查文件在各种输入、输出函数进行读写时是否出错。
如果返回值为0,则未出错,否则出错。

3.clearerr函数:

·函数原型:
int clearerr(FILE *fp);
·函数功能:
用于清除出错标志和文件结束标志,使他们的值为0.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值