标准IO与文件IO

feof:检测文件是否到达结尾

ferroe:检测文件是否发生错误

一、标准IO   fseek定位:

SEEK_END指向后继续加会扩大文件返回值:
成功: 返回 0
失败:  -1;

1.ftell:long ftell(FILE *stream);rewind(fp)

功能:获取当前文件流指针的具体位置,一般以文件开头到当前指针的字节数为返回值。
参数:stream 要返回指针距离的文件流对象     

返回值:成功 获取到的距离长度,单位是字节               失败 -1; 

2.rewind()  等效于:fseek(stream,0L,SEEK_SET)    (用于文件复位)

二、缓冲区:

1.行缓冲:1k, terminal,主要用于人机交互stdout
刷新条件:                 1.遇到\n刷新
                 2.缓存区满刷新
                 3.程序结束刷新
                 4.fflush刷新  fflush(stdout);

2.全缓冲:4k, 主要用于文件的读写           对普通文件进行标准IO操作,建立的缓存一般为全缓存

刷新条件与行缓冲类似,但不能通过识别\n 刷新

3. 无缓冲:0k  主要用于出错处理信息的输出 stderr       不对数据缓存直接刷新

三、文件IO

1. 操作系统为了方便用户使用系统功能而对外提供的一组系统函数,称之为系统调用。其中有一个文件IO,一般都是对设备文件操作,当然也可以对普通文件进行操作。(其本质是一个基于Linux内核的没有缓存的IO机制)

2.特性:1、没有缓存区2、操作对象不再是流(FILE*),而是文件描述符(int 0-1023)3、文件描述符(内核每打开一个文件就会获得一个文件描述符)

3.一般步骤:  open     -      read/write          -close

4.open:打开或创造一个文件 int open(const char *pathname, int flags,int mode)

   flags标签:

如果创造标签为creat,则需要加权限

成功返回 文件描述符    失败返回-1

5.write:通过文件描述符向文件中输入字符串  ssize_t write(int fd,  const  void *buf, size_t count)

fd为文件描述符,buf为要写入文件的字符串首地址 ,count为写入字符的个数,一般为buf有效长度

返回值:成功返回实际写入的个数            失败返回-1

6.read:通过文件描述符读取文件中的数据ssize_t read(int fd, void *buf, size_t count)

fd为文件描述符,buf为存放数据的空间首地址   count要读到的数据个数

返回值:成功返回读到的数据大小,单位为字节        失败返回-1    读到文件结尾返回0

7.lseek:与fseek相似off_t lseek(int fd, off_t offset, int whence)

offset 偏移量 正:向后偏移 负:向前偏移 零:不偏移

返回值:  成功返回偏移量   失败返回-1    在原本位置上有数据写为覆盖

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值