标准IO和文件IO

1.IO的分类:

标准 IO和 文件 IO。

2.按操作方式来分:

带缓冲区的操作:(标准 IO )高级的文件操作,系统会自动的在内存上给我们分配缓冲区。
不带缓冲区的操作:(文件 IO )低级的文件操作,系统是不会自动的给我们的程序分配空间,但是如果需要缓冲区的机制,缓冲区就得自己定义了。

3.标准IO和文件IO的区别

标准 IO:
1. 标准 IO 是由库函数系统提供的,由 ANSI C 标准定义
2. 是带缓冲区的操作,运行效率较高
3. 支持跨平台的
4. 标准 IO 操作的依据一般是流指针
文件 IO:
1. 文件 IO 是由操作系统提供的,由 POSIX (可移植操作系统接口)定义
2. 没有缓冲区,运行效率没有标准 IO
3. 不支持跨平台的
4. 文件 IO 操作的依据一般是文件描述符(非负整数)

1.标准IO

1.标准IO缓冲区的方式:

1.全缓冲:

缓冲区满了才刷新缓冲区,或者强制刷新缓冲区。

2.行缓冲:

碰到换行符刷新缓冲区、缓冲区满了刷新、或者强制刷新缓冲区。

3.不缓冲:

所有的信息到缓冲区之后直接到文件

2.标准IO对文件进行操作:

1.打开文件:

fopen
函数功能:打开由参数 1 描述的文件,打开的方式由参数 2 确定
函数参数 1 :需要被打开的文件的路径
函数参数 2 :打开的方式
r : 以只读的形式打开文件,文件存在则打开,不存在则报错
r+ : 以读、写的形式打开文件,文件存在则打开,不存在则报错
w : 以只写的形式打开文件,文件存在则清空打开,文件不存在则新建
w+ : 以读、写的形式打开文件,文件存在则清空打开,文件不存在则新建
a : 以追加的形式打开文件,文件存在则追加,文件不存在则新建
a+ : 以可读可写(追加)的形式打开文件,文件存在则追加,文件不存在则新建
函数返回值:成功返回:文件流指针
失败返回 NULL ,并且更新 errno

2.操作文件:

1.以字符读写:

fputc:
函数功能:给stream
写了一个字符c
函数参数1
:被写的字符
函数参数2
:给谁写
函数返回值:成功返回写入的字符,失败返回-1

fgetc:
函数功能:从stream
指示的文件中读取字符
函数参数:需要读字符的文件流
函数返回值:成功返回读到的字符可以是(EOF
,表示读完了),失败返回-1

2.以行读写:

fgets:

函数功能:按行读
函数参数 1 :读到哪
函数参数 2 :读多少(实际读到的是 size-1 ,最后一个空间给 \0 预留) 所以 fgets 相较于 gets 是安全的
函数参数 3 :从哪读
函数返回值:成功返回非 0 ,返回 NULL 的时候是出错或者没有可读的字符了
fputs
函数功能:给文件写
函数参数 1 :从哪写
函数参数 2 :给谁写
函数返回值:成功返回非负整数,失败返回 -1
3.以对象读写:
fread:
函数功能:读
函数参数 1 :读到哪
函数参数 2 :一次读多少
函数参数 3 :总共读多少次数
函数参数 4 :从哪读
函数返回值:成功返回成功读或写的成员的个数,失败返回0
fwrite:
函数功能:写
函数参数 1 :从哪写
函数参数 2 :一次写读多少
函数参数 3 :总共写多少次
函数参数 4 :往哪写
函数返回值:成功返回成功读或写的成员的个数,失败返回 0
4.以格式化读写:
fscanf:
函数功能:从指定的流里面获取信息
函数参数 1 :指定的流
函数参数 2…… :同 scanf
fprintf
函数功能:往指定的流里面输出东西
函数参数 1 :指定的流
函数参数 2…… :同 printf
5.关闭文件:
fclose:
函数功能:关闭由参数 stream 指示的流
函数参数:需要被关闭的流
函数返回值:成功返回 0 ,失败返回 -1 并且设置 errno
6.标准IO相关函数:
fflsh
函数功能:强制刷新由参数 1 指定的流
函数参数如果为 NULL ,则会刷新所有已打开的输出流
函数返回值:成功返回 0 ,失败返回 -1 并且更新 errno
feof:
判断文件是否到末尾
time 函数:
函数功能:返回一个从计算机元年到现在的秒数( 1970-1-1 0:0:0
函数参数:如果参数不为 NULL ,返回值也可以传址调用的形式返回
函数返回值:成功返回到现在的秒数,失败返回 -1 ,并且更新 errno
localtime()
函数功能:获取本地时间
函数参数:秒数
函数返回值:指向年月日结构体的指针
光标移动:
fseek();
函数功能:给指定的流从参数 3 描述的位置移动参数 2 个大小的位置
参数 1 :给谁移动光标
参数 2 :移动多少
参数 3 :从那开始:
SEEK_SET 从文件开头移动
SEEK_CUR 从文件当前光标指向的位置开始移动
SEEK_END 从文件末尾开始移动
返回值:
成功返回 0 ,失败返回 -1 并且更新 errno

 
获取光标位置:
ftell();
函数功能:计算由参数 stream 指示的流当前光标处在的位置
函数参数:指定的文件流
函数返回值:成功返回当前处在的位置,失败返回 -1 ,并更新 errno

fileno:
函数功能:获取文件流指针里面的文件描述符

2.文件IO

1.打开文件:

第二个 open 函数
函数功能:打开文件
函数参数 1 :需要打开的文件路径
函数参数 2 :打开的方式
必须包含如下的其中一个
O_RDONLY : 只读
O_WRONLY : 只写
O_RDWR : 可读可写
还可以有以下的:
O_APPEND: 以追加的形式打开
O_CREAT : 文件存在则打开,不存在则按照 mode 参数描述的权限创建一个普通文件
函数参数 3 :如果文件存在则打开,不存在则按照此参数描述的创建一个普通文件
函数返回值:成功返回文件描述符(非负的最小整数) file description fd
失败返回 -1 ,并且更新 errno

2.操作文件:

1.read:

函数功能:从 fd 描述的文件中读取 count 个字节的数据给 buf 开始的空间
函数参数 1 :从哪读
函数参数 2 :读到哪
函数参数 3 :读多少
函数返回值:成功返回实际上读到的数目,失败返回 -1 ,并且更新 errno
2.write
函数功能:把数据从 buf 指示的空间里面写道 fd 里,写了 count
函数参数 1 :往哪写
函数参数 2 :从哪写
函数参数 3 :写多少
函数返回值:成功返回写入的个数,失败返回 -1 并且更新 errno

3.关闭文件:

close:

函数功能:关闭文件
函数参数:需要关闭的文件的文件描述符
函数返回值:成功返回 0 ,失败返回 -1 并且更新 errno

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值