c语言的文件操作
perror(“输出字符串”):函数会把输出字符串和对应的解释拼接起来
printf,scanf,perror这三个库函数操作标准文件指针stdout,stdin,stderr,
stdin的文件描述符是0,通过文件描述符找到对应的inode,找到对应的是文件,该文件对应的设备是键盘
stdout的文件描述符是1,通过文件描述符找到对应的inode,找到对应的是文件,该文件对应的设备是屏幕
stderr的文件描述符是2,通过文件描述符找到对应的inode,找到对应的是文件,该文件对应的设备是屏幕
stdin,stdout,stderr这三个对应的系统文件是在应用程序打开时自动打开,关闭时自动关闭
文件结构体FILE,通过fopen函数,想当与在heap上malloc了一块大小为sizeof(FILE)的内存空间,里面存放的是文件的信息,包含文件描述符,缓冲区等等
文件指针的操作都是通过函数来完成,不能通过操作普通指针那样来操作文件指针。
文件函数的操作并不是直接把数据写入到磁盘中,而是写入到缓冲区中,然后一次性写入到磁盘中
文件的分类:
1.设备文件
1.块设备
2.字符设备
2.磁盘文件
1.文本文件:按字符操作
2.二进制文件:按字节操作
打开文件fopen:
参数1:文件名+路径
绝对路径:/和\\(转义)
相对路径:
参数2:文件打开方式
r:只读
w:写,如果文件不存在,创建,如果存在,则清空
w+:读写方式,如果文件不存在,创建,如果存在,则清空
b在linux下没有意义
返回值:
成功返回指针
失败返回NULL
关闭文件fclose:
参数值:
返回值:
成功返回0
失败返回-1
fputc:
返回值:
成功返回写入字符的assic码
失败返回-1
fgetc:
返回值:
成功返回写入字符的assic码
失败返回-1
文件结束符:-1,EOF是定义的宏,值是-1,可以通过EOF来判断文件指针是否到达文件末尾,也可以通过-1来判断
文本文件中通过判断EOF来判断是否到达文件末尾,也可以通过feof判断,非文本文件只能通过feof函数来判断
feof:该函数使用前必须使用读文件的函数移动文件指针
返回值:
1,到达末尾,返回非0值
2,没有到达,返回0
fgets:
1.从指定的文件内读取字符,保存到str所指向的空间,
2.读取结束的条件:
1.读取了size-1个字符,因为要在字符串的后面添加\0
2.读取到了\n
3.到了文件末尾
3.如果空间足够大,会把\n读取到str中
返回值:
成功返回读取到的字符串
失败返回NULL
fputs:
把字符串写入到对应的流中
成功返回0
失败返回-1