码迷,mamicode.com
首页 > 编程语言 > 详细

C语言IO操作

时间:2020-02-20 20:14:56      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:访问权限   open()   close   标准io   规则   c语言   fclose   影响   实现   

文件的概念和类型

  概念:一组相关数据的有序集合

  文件类型:

  1. 常规文件 r
  2. 目录文件 d
  3. 字符设备文件 c
  4. 块设备文件 b
  5. 管道文件 p, 进程间通信的机制
  6. 套接字文件 s, 进程间通信的机制
  7. 符号链接文件 l

如何理解标准IO

  标准IO由ANSIC标准定义,就是用标准C语言定义好的一组用来输入和输出的API

  主流操作系统(Linux,Windows)上都实现了C库

  标准IO通过缓冲机制减少系统调用,实现更高的效率

流(FILE)的含义

  标准IO用一个结构体数据类型来存放打开的文件的相关信息

  标准IO的所有操作都围绕FILE来进行

  FILE又被称为流(stream)

  流分为两种流分别是

    文本流:Windows系统中文本流的换行符占用两个字节用“\r\n”表示,LInux中用‘\n’表示

    二进制流:Windows系统二进制流的换行符占用一个字节用“\n”表示,LInux中用‘\n’表示

流的缓冲

  全缓冲:当流的缓冲区无数据或无空间时才执行实际IO操作

  行缓冲:当在输入和输出中遇到换行符“\n”时,进行IO操作;当流和一个终端关联时,是典型的行缓冲

  无缓冲:数据直接写入文件,流不进行缓冲,一般在打印错误信息时使用

  标准IO预定义3个流,程序运行时自动打开

标准输入流 0 STDIN_FILENO stdin
标准输出流 1 STDOUT_FILENO stdout
标准错误流 2 STDERR_FILENO stderr

 

 

 

流的打开

  下列函数可用于打开一个标准IO流

   FILE *fopen(const char *path, const char *modle);

  成功时返回流指针;出错时返回NULL

  model参数

模式描述
r或rb 打开一个已有的文本文件,允许读取文件。
w或wb 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。
a或ab 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。
r+或r+b 打开一个文本文件,允许读写文件。
w+或w+b 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。
a+或a+b 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。

    

 

 

 

 

 

    当给定b参数时,表示以二进制方式打来文件,但linux下忽略该参数

  fopen新建文件权限

    fopen()创建的文件访问权限是0666(rw-rw-rw),0表是8进制数

    Linux系统中umask设定会影响文件的访问权限,其规则为(0666 & (~umask)),可以通过umask命令查看,默认为0022

    0022  ----> 000 010 010

    取反   ----> 111 101 101

    0666  ----> 110 110 110

    结果:---> 110 100 100   ---> 0644(rw-r--r--)

    用户可以通过umask函数修改相关设定,将umask设置为0时,umask不影响文件访问权限

错误信息处理

  extern int errno;//存放错误号

  void perror(const char *s);//向输出字符串s,再输出错误号对应的错误信息

  char *strerror(int errno);//根据错误号返回对应的错误信息

流的关闭

  int fclose(FILE *stream)

  fclose()调用成功返回0,失败返回EOF,并设置errno

  流关闭时自动刷新缓冲中的数据并释放缓冲区

  当一个程序正常终止时,所有打开的流都会被关闭,但是为了安全期间,程序员要主动关闭

  流一旦关闭后就不能执行任何操作

 

C语言IO操作

标签:访问权限   open()   close   标准io   规则   c语言   fclose   影响   实现   

原文地址:https://www.cnblogs.com/xdl-smile/p/12336875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!