嵌入式学习16(文件IO)

精髓:把文件当屏幕

 

一、引入

文件:有限数据的集合

txt文档:有限文本的集合

exe程序:有限指令的集合

内存:一旦电脑关机,内存会被清空

文件:为了长期保存信息,一般文件存储在外存(U盘,光盘,硬盘等)

 

文件的构成:位置+存储空间

文件的划分:

Ø  文本文件:文件的数据都是以对应字符的ASCII值存到硬盘中

eg:文件(ABC) 在内存中[010000001][01000010][01000011][-1]

文件结束符为-1(EOF)

Ø  二进制文件

二、文件操作三部曲

1、  打开  FILE* fopen(“path”,”操作的方式”)注:path可为指针,如存有地址的数组名

操作方式:  (对二进制文本后面加b即可)

Ø  只读 r:如果文件不存在则报错

Ø  只写 w:如果文件不存在,则新建。若存在,则截断为0

Ø  追加 a+:打开文件时,文件读写指向文件末尾

Ø  可读写  r+可读写,但文件不存在返回错误    

w+可读写,如果文件不存在则创建

2、  读写操作

ü  文本文件:

写:

fputc(“”,fp)  打印一个字符到文件中

fputs(“”,fp)  打印一个字符串

fprintf(fp,””)  格式化打印任意内容

类比记忆:printf打印到屏幕,sprintf打印到字符串,fprint打印到文件    

      读:

fgetc(fp) 读一个字符

fgets(fp) 读一个字符串

     fscanf(fp,”%d%s”,&a,s)格式化读

文本结束条件:

1)       while(!feof(fp))…..

2)      文件结束符为-1(EOF)

 

ü  二进制文件

读:fread(&a,sizeof(int),1,fp);   返回实际读写的次数

写:fwrite(a,sizeof(int),1,fp);     返回实际读写的次数

结束条件:

二进制文本没有结束标志,通过判断上面两个函数返回值判断是否结束

3、  关闭

硬盘中无法匹配速度,故文件在寄存器中读写,而寄存器具有易失性

只有正常关闭,系统才会将缓冲区的数据正常写(或读取)到磁盘

 

三、定位

文件每以打开时,都有一个文件的读写位置。

每读或写n个Byt时,文件的读写位置就会移动此n+1的位置。

每次新打开一个文件时,读写位置都位于文件头,因此不以a方式打开时,会覆盖。

 

重定位函数 int fseek((FILE*,int offset,int whence)  重定位成功返回0,失败返回-1

whence:基准(开头SEEK_SET,当前SEEK_CUR,结尾SEEK_END)

offset:位移量(>0向右移动    <0向左移动)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值