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