年轻人的努力

导航

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

posted on 2021-03-28 13:31  年轻人的努力  阅读(66)  评论(0编辑  收藏  举报