你应该知道的C语言文件操作

C语言文件的操作详解

1.概述

  • 文件的打开操作
    1.打开一个文件 fopen
  • 文件的关闭操作
    1.关闭一个文件 fclose
  • 文件的读写操作
    1.从文件中读取一个字符 fgetc
    2.写一个字符到文件中去 fputc
    3.从文件中读取一个字符串 fgets
    4.写一个字符串到文件中去 fputs
    5.向文件中写格式化数据 fprintf
    6.格式化读取文件中数据 fscanf
    7.以二进制形式读取文件中的数据 fread
    8.以二进制形式写数据到文件中去 fwrite
    9.以二进制形式读取一个整数 getw
    10.以二进制形式存储一个整数 putw
  • 文件状态检查函数
    1.文件结束 feof
    2.文件读写出错 ferror
    3.清除文件错误标志 clearerr
    4.了解文件指针的当前位置 ftell
  • 文件定位函数
    1.反绕 rewind
    2.随机定位 fseek
  • 文件操作的访问模式
访问模式含义文件不存在时文件存在时
r以只读方式打开一个文本文件错误打开文件
w以只写方式打开一个文本文件建立新文件打开文件,并且清空原文件
a以追加方式打开一个文本文件建立新文件打开文件,只能从文件尾向文件追加数据
r+以读/写方式打开一个文本文件错误打开文件
w+以读/写方式打开一个文本文件建立新文件打开文件,并且清空原文件
a+以读/写方式追加打开一个文本文件建立新文件打开文件,可从文件中读取或向文件中写入数据
rb以只读方式打开一个二进制文件错误打开文件
wb以只写方式打开一个二进制文件建立新文件打开文件,清空原文件
ab以追加方式打开一个二进制文件建立新文件打开文件,只能够从文件尾向文件追加数据
rb+以读/写方式打开一个二进制文件错误打开文件
wb+以读/写方式打开一个二进制文件建立新文件打开文件,清空原文件
ab+以读/写方式追加打开一个二进制文件建立新文件打开文件,可从文件中读取或向文件中写入数据

2.文件的打开

  • 函数原型
FILE *fopen(char *pname, char *mode);
  • 功能说明
    按照mode给定的方式,去打开pname指定的文件,如果找不到文件,则会根据mode方式来进行处理!
  • 参数说明
    1.pname:一个字符指针,它指向要打开或者建立的文件名字的字符串
    2.mode:一个指向文件处理方式字符串的字符指针,具体方式详细见上表
  • 返回值
    1.正常返回:被打开文件的文件指针
    2.异常返回:NULL,表示打开文件操作不成功
  • 实例
FILE *fp = fopen("example.txt","r");//以只读形式打开文件example.txt

3.文件的关闭

  • 函数原型
int fclose(FILE *fp);
  • 功能说明
    关闭有fp文件指针所指向的文件。此时调用操作系统的文件关闭功能,关闭有fp文件指针所指向的文件,释放有关缓冲区。返回操作结果。
  • 参数说明
    1.fp:一个已经打开文件的文件指针fp
  • 返回值
    1.正常返回:0
    2.异常返回:EOF(表示文件在关闭的时候发生错误)
  • 实例
fclose(fp);//关闭fp所指向的文件

4.文件的读写操作

— 从文件中读取一个字符 —
  • 函数原型
int fgetc(FILE *fp);
  • 功能说明
    从文件指针fp所指向文件中读取一个字符。
  • 参数说明
    1.fp:一个已经打开文件的文件指针fp。
  • 返回值
    1.正常返回: 返回读取的字符代码
    2.异常返回:返回EOF
— 写入一个字符到文件中去 —
  • 函数原型
int fputc(int ch,FILE *fp);
  • 功能说明
    把ch中的字符写入由文件指针fp所指向的文件中去。
  • 参数说明
    1.ch:是一个整型变量,内存要写到文件中的字符(C语言中整型量和字符量可以通用)。
    2.fp:这是个文件指针,指向要在其中写入字符的文件。
  • 返回值
    1.正常返回: 返回读取的字符代码
    2.异常返回:返回EOF
— 从文件中读取一个字符串 —
  • 函数原型
char *fgets(char *str,int n,FILE *fp);
  • 功能说明
    从由fp指向的文件中读取n-1个字符,并把它们存放到由str指出的字符数组中去,最后加上一个字符串结束符’\0’。
  • 参数说明
    1.str:接收字符串的内存地址,可以是数组名,也可以是指针。
    2.n:要读取字符的个数
    3.fp:这是个文件指针,指向要在其中读取字符串的文件。
  • 返回值
    1.正常返回:返回字符串的内存首地址,即str的值
    2.异常返回:返回一个NULL值
— 写一个字符串到文件中去 —
  • 函数原型
int fputs(char *str,FILE *fp);
  • 功能说明
    把由str指出的字符串写入到fp所指的文件中去。
  • 参数说明
    1.str:指出要写到文件中去的字符串。
    2.fp:这是个文件指针,指向要写入字符串的文件。
  • 返回值
    1.正常返回:写入文件的字符个数,即字符串的长度
    2.异常返回:返回一个NULL值
— 往文件中写入格式化数据 —
  • 函数原型
int fprintf(FILE *fp,char *format,arg_list);
  • 功能说明
    将变量表列(arg_list)中的数据,按照format指定的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。
  • 参数说明
    1.fp:这是个文件指针,指出要将数据写入的文件。
    2.format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
    3.arg_list:是要写入文件的变量列表,各变量之间使用逗号分隔。
  • 返回值
    1.正常返回:返回写入文件中的字符数
    2.异常返回:EOF
— 从文件中格式化读取数据 —
  • 函数原型
int fscanf(FILE *fp,char *format,arg_list);
  • 功能说明
    从fp指向文件中读取数据,按照format指定的格式,写入变量列表之中。
  • 参数说明
    1.fp:这是个文件指针,指出要读取数据的文件。
    2.format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
    3.arg_list:是要从文件读取数据存储的变量列表,各变量之间使用逗号分隔。
  • 返回值
    1.正常返回:返回读取到文件中的字符数
    2.异常返回:EOF
— 以二进制形式读取文件中的数据 —
  • 函数原型
int fread(void *buffer,unsigned sife,unsigned count,FILE *fp);
  • 功能说明
    从由fp指定的文件中,按二进制形式将sife*count个数据读到由buffer指出的数据区中
  • 参数说明
    1.buffer:这是一个void型指针,指要将读入数据存放在其中的存储区首地址。
    2.sife:指一个数据块的字节数,即一个数据块的大小尺寸。
    3.count:指一次读入多少个数据块(sife)。
    4.fp:这是个文件指针,指要从其中读出数据的文件。
  • 返回值
    1.正常返回:实际读取数据块的个数,即count
    2.异常返回:0
— 以二进制形式写数据到文件中去 —
  • 函数原型
int fwrite(void *buffer,unsigned sife,unsigned count,FILE *fp);
  • 功能说明
    从由fp指定的文件中,按二进制形式将sife*count个数据读到由buffer指出的数据区中
  • 参数说明
    1.buffer:这是一个void型指针,指出要将其中数据输出到文件的缓冲区首地址。
    2.sife:指一个数据块的字节数,即一个数据块的大小尺寸。
    3.count:指一次输出多少个数据块(sife)
    4.fp:这是个文件指针,指要从其中写入数据的文件。
  • 返回值
    1.正常返回:实际读取数据块的个数,即count
    2.异常返回:0
— 以二进制形式读取一个整数 —
  • 函数原型
int getw(FILE *fp);
  • 功能说明
    从由fp指定的文件中,以二进制形式读取一个整数
  • 参数说明
    1.fp:这是个文件指针,指要从其中读取数据的文件。
  • 返回值
    1.正常返回:所读取整数的值
    2.异常返回:EOF(因为读取出来的整数值可能是-1,所以需要使用foef()或ferror()来判断是否到了文件结束,亦或是文件出现错误)
— 以二进制形式写入一个整数 —
  • 函数原型
int putw(int n,FILE *fp);
  • 功能说明
    以二进制形式把由变量n指出的整数值存放到由fp指定的文件中。
  • 参数说明
    1.fp:这是个文件指针,指要从其中写入数据的文件。
  • 返回值
    1.正常返回:所写入的整数值
    2.异常返回:EOF

5.文件状态检查

—文件结束—
  • 函数原型
int feof(FILE *fp);
  • 功能说明
    判断文件是否结束。
  • 参数说明
    1.fp:这是个文件指针。
  • 返回值
    1.0:假值,表示文件没有结束
    2.1:真值,表示文件结束
—文件读/写出错—
  • 函数原型
int ferror(FILE *fp);
  • 功能说明
    检查由fp指定的文件在读写时是否出错。
  • 参数说明
    1.fp:这是个文件指针。
  • 返回值
    1.0:假值,表示无错误
    2.1:真值,表示出错
—清除文件错误标志—
  • 函数原型
void clearerr(FILE *fp);
  • 功能说明
    清除由fp指定文件的错误标志。
  • 参数说明
    1.fp:这是个文件指针。
  • 返回值
—了解文件指针当前位置—
  • 函数原型
long ftell(FILE *fp);
  • 功能说明
    取得由fp指定文件的当前读/写位置,该位置值用相对于文件开头的位移量来表示。
  • 参数说明
    1.fp:这是个文件指针。
  • 返回值
    1.正常返回:位移量
    2.异常返回:EOF

6.文件定位

—反绕—
  • 函数原型
void rewind(FILE *fp);
  • 功能说明
    使由文件指针fp指定的文件的位置指针重新指向文件的开头位置。
  • 参数说明
    1.fp:这是个文件指针。
  • 返回值
—随机定位—
  • 函数原型
int fseek(FILE *fp,long offset,int fromwhere);
  • 功能说明
    使文件指针fp移到基于fromwhere的相对位置offset处。
  • 参数说明
    1.fp:这是个文件指针。
    2.offset:相对base的字节位移量。这是一个长整数。用来支持大于64KB文件
    3.fromwhere:这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:
常量描述
SEEK_SET文件的开头
SEEK_CUR文件指针的当前位置
SEEK_END文件的末尾
  • 返回值
    1.成功返回:0
    2.失败返回:非0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值