个人杂记:
缓冲区:
IO分为标准IO和文件IO
按照是否有缓冲区操作来分:
有缓冲区操作的(标准IO)
没有缓冲区操作的(文件
IO
)
标准
IO
1.
标准
IO
是库函数(
ANSI C
)提供的、
2.
跨平台
3.
有缓冲机制
4.
文件流(指针)
文件
IO
1.
文件
IO
是系统调用(
POSIX
、可移植操作系统接口、
Unix
)提供的
2.
不能跨平台
3.
没有缓冲机制
4.
文件描述符(整型、数组下标)
标准IO:缓冲方式:全缓冲、行缓冲、不缓冲
全缓冲:缓冲区满或者强制刷新缓冲区;
行缓冲:遇到换行符或者强制刷新缓冲区;
不缓冲:不缓冲(
stderr
)
文件的打开:
参数
1
:要打开的文件(可以带路径)
参数
2
:打开的模式
r
: 以只读的方式打开文件,文件存在则打开,不存在则报错
r+
: 以读写的方式打开文件,文件存在则打开,不存在则报错
w
: 以只写的方式打开文件,文件存在则打开,文件不存在则新建
w+
: 以读写的方式打开文件,文件存在则打开,文件不存在则新建
a
: 以追加(只写)的方式打开文件,文件存在则打开,不存在则新建
a+
: 以追加(读写)的方式打开文件,文件存在则打开,不存在则新建
b
: 以二进制的形式
返回值:成功:打开的文件的文件流指针
失败:
NULL+
错误码
标准IO:
操作文件:
1..按字符读写:fgetc()
函数参数:想要从中读取字符的文件流指针
函数返回值:读到的内容
模拟CAT命令:
fputc()
参数
1
:要写入的数据
参数
2
:要往哪个文件写
模拟CP命令
2.按行读写:
fgets()
参数
1
:把内容读到哪里去、
参数
2
:读的大小
参数
3
:从哪个流中读
返回值:成功内容读到
s
中 失败
NULL
fputs()
参数
1
:要写入的字符串
参数
2
:要写入的流
返回值:成功:成功写入的个数,失败:
EOF
(
-1
)
统计一个文件中有多少行
3.按对象读写:
fwrite()
参数
1
:从哪里写
参数
2
:每一次写多少
参数
3
:一共写多少
参数
4
:写给谁
函数返回值:成功:成功写入的个数,失败,
0
fread()
参数
1
:读到哪
参数
2
:每一次读多少个
参数
3
:一共读多少个
参数
4
:从哪读
函数返回值:成功,读到的个数,失败
0
4.
按格式化读写:
fprintf()
参数
1
:要输出的流
参数
2……
同
printf
fscanf()
参数:要关闭的文件流指针
返回值:成功返回
0
,失败返回
-1
和错误信息
文件的其他相关函数:
强制刷新缓冲区:
fflush()
函数参数:要刷新的流
判断是否到末尾:
feof()
函数参数:需要判断的流
函数返回值:成功
1
,失败
0
fseek()
移动光标:
参数
1
:要跳的流
参数
2
:移动的大小
参数
3
:从哪里移动
SEEK_SET
:文件开头
SEEK_CUR
:光标当前位置
SEEK_END
:文件结尾
ftell()
获取当前文件的光标所在位
参数:要判断的流
获取文件的大小
time()函数
函数参数:如果不为空,函数返回值也可以返回到
tloc
所指向的空间中
返回值:从
1970-1-1 0
:
0
:
0
到现在的秒数
文件IO:
文件打开:
文件打开:
int open()
参数
1
:要打开的文件名(可以带路径)
参数
2
:打开的方式
O_RDONLY
:只读
O_WRONLY
:只写
O_RDWR
:可读可写
---------------------------------
O_CREAT :
文件不存在则新建
参数
3
:创建的文件的权限
返回值:成功:打开文件的文件描述符,失败
-1
和错误码
文件掩码:保护数据的安全
文件操作:
read:
参数
1
:从哪读
参数
2
:读到哪
参数
3
:读多少
返回值:成功:读到的数,失败:
-1
和错误码
write:
参数
1
:要给谁写
参数
2
:写的啥
参数
3
:写多少
返回值:成功:返回成功写入的个数,失败返回
-1
和错误码
对文件的
cp
文件的关闭:close()
函数参数:要关闭的文件描述符
函数返回值:成功
0
, 失败返回
-1
和错误码
对目录文件进行操作:
打开目录文件: DIR *opendir()
参数:要打开的目录文件
返回值:成功:指针,失败:
NULL
和错误码
操作文件:
读:
readdir()
参数:读取的目录
返回值:成功返回一个成员的信息,失败返回
NULL
动态库和静态库:
创建库:
静态库:
动态库: