• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
IO

io
文件IO
open read write close lseek
open 返回的事文件描述符

INNODE节点

当打开一个进程的时候 内核会自动给我们打开3个文件描述符 0 标准输入 1标准输出 2 标准出错

标准IO
fopen fclose fseek rewind ftel
全缓存 行缓存 无缓存
全缓存 只有写满缓存后在调用系统缓存函数 读fread 写 fwrite

行缓存:遇到换行符(\n)或者写满缓存即调用系统函数读fgets gets printf fprintf sprintf 写 fputs puts scanf stdin stdout

gets和fgets区别:
gets不能指定缓存的长度,这样就可能造成缓存越界(如若改行长于缓存长度)写到缓存之后的存储空间中 从而产生不可预料的后果;
gets只能从标准输入中读;

gets并不新行符存入缓存中,fgets将新航服存入缓存中;


puts和fputs区别:puts()只能向标准输出中写 ;puts输出时会添加一个新行符 fputs不会添加

 

 

fgetc:
从文件中读取一个字符
文件流(可以读取文件和键盘)
正确为读取的字符,到文件结尾或出错是返回EOF

fputc:
写一个字符到文件中
第一个参数为要写的字符 第二个参数为文件流
成功则返回输入的字符 出错返回EOF

fgetc不是行缓存函数

 

feof:
判断是否已经到了文件结束
文件流
到文件结束返回非0 没有则返回0

ferror:
判断是否读写错误
文件流
是读写错误 发挥非0 不是则返回0

clearerr
清除流错误
文件流

一个字符的读写 是否是行缓存
读:fgetc getc getchar
写:fputc putc putchar

无缓存 只要用户调用这个函数,就会将内容写到缓存 stder
fopen返回的是文件流指针
stdin(标准输入) stdout(标准输出) stder(标准出错)


fflush强制把库缓存内容刷新到内核中
fclose里面包含有fflush函数

目录IO

 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/10589056.html

posted on 2019-03-24 17:17  孙龙-程序员  阅读(120)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3