C语言文件操作

1、首先定义个文件指针变量

FILE *fp;

2、接着,使用fopen函数打开一个文件,一种指定的打开模式

fp=fopen(fileName, openMode);

当然,在使用完文件后一定要关闭文件,fclose();

其中,文件名可以是相对地址,或者绝对地址,但是需要注意的是,地址中的分隔符反斜杠,需要两个而不是一个。

文件的打开模式有以下几种:

使用文件方式
文件使用方式含义
"r"(只读)为输入打开一个已存在的文本文件
"w"(只写)为输出打开一个文本文件
"a"向文本文件尾添加数据
"rb"为输入打开一个二进制文件
"wb"为输出打开一个二进制文件
"ab"向二进制文件尾添加数据
"r+"为读写打开一个文本文件
"w+"为读写建立一个新的文本文件
"a+"为读写打开一个文本文件
"rb+"为读写打开一个二进制文件
"wb+"为读写建立一个新的二进制文件
"ab+"为读写打开一个二进制文件

 

 

 

 

 

 

 

 

 

(1)不能用r打开一个不存在的文件,且打开之后只能读

(2)用w打开,如果打开文件不存在,则建立一个指定命名的文件,如果已经存在,则打开时将其删除,然后重新建立一个,打开之后只能写

(3)如果希望向文件末尾添加数据,则可以使用a方式,它只能打开已存在文件,打开后文件指针指向文件结尾

(4)用r+、w+、a+方式打开的文件既可以用来输入数据,也可以用来输出数据。用r+打开的文件应该已经存在,否则出错,用w+打开则会新建立一个文件,用a+打开,原文件不删除,文件指针移动到文件尾

(5)打开方式中带有b的是用来以二进制方式方式打开文件的

3、文件格式化函数

fprintf(文件指针, 格式化字符串, 输出列表);

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

4、向文件读写一组数据

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

buffer是一个指针,对fread来说,它是读入数据的存放地址,对fwrite来说,它是输出数据的地址

size是要读写的字节数,即单个数据占得字节数,int是4,char是1

count是要读取或者写入多少个size字节的数据项

fp是文件指针

5、文件的随机读写

(1)用rewind()函数使文件指针指向文件头

(2)用fseek() 实现改变文件指针的指向位置

fseek(文件指针, 偏移量, 起始点);

起始点用0、1、2代替,分别代表文件开始、当前位置、文件尾

偏移量是以起始点为基点的偏移

(3)ftell()函数判断文件指针的指向位置

返回值是相对于文件头的偏移量

6、个人总结

文件是计算机内存中二进制表示数据在外村上的存储形式,在C语言中分为二进制文件和文本文件

(1)二进制文件存储的数据和内存中的数据一样,是内存中数据的原样输出,而且windows是小端模式存储数据的,所以这点也要注意

(2)文本文件是以可视的方式将内存中的二进制数据存储在外存上的,它使用了ASCII编码进行存储,有一点需要注意,在以文本写入文件时,遇到换行,将自动将在换行前加入回车然后存储,在以文本文件读取数据时,遇到回车、换行连在一起时,会自动将回车和换行读取为换行

所以,在操作文件时必须以一致的方式来进行读写文件,否则将会出错。

常用文件操作函数
分类函数名功能
打开文件fopen()打开文件
关闭文件fclose()关闭文件
文件定位fseek()改变文件指针位置
rewind()使文件指针指向文件头
ftell()得到文件指针当前位置
文件读写fgetc(), getc()从指定文件读取一个字符
fputc(), putc()把字符输出到指定文件
fget()从指定文件读取字符串
fputs()把字符串输出到指定文件
fread()从指定文件读取数据块
fwrite()把数据块写入到文件
fscanf()格式化读取文件数据
fprintf()格式化写入文件数据
文件状态feof()若到文件末尾,函数值为真
ferror()如果文件操作出错,函数值为真
clearerr()使ferror、feof函数值置0
   

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值