第二阶段01 文件系统IO

本文介绍了C语言中的系统IO操作,包括open、write和close函数的使用。open用于打开文件,提供了多种标志位如O_RDWR和O_CREAT。write函数用于将数据写入已打开的文件,而close函数用于关闭文件。通过示例代码展示了如何正确使用这些函数,并讨论了错误处理的方法,如通过perror和strerror获取错误信息。
摘要由CSDN通过智能技术生成

加入CSDN是出于记录,希望有不足之处多加指正。

1、文件IO

系统IO:

  • 由系统直接提供函数接口,特点是接口简洁而功能单一。
  • 没有提供缓冲区,对于处理海量数据效率低下。
  • 有个别的文件/操作只能通过系统IO来访问。

标准io:

  • 由标准C库所提供的接口,特点功能比较丰富。
  • 有提供缓冲区,多余处理量数据来说效率比较高。
  • 编程过程中尽量多使用标准IO,只有在某些不得已的情况下才选择系统IO。

系统IO的API接口:

  1. 确保文件存在:access();
  2. 打开文件:open();
  3. 写入信息:write();
  4. 关闭文件:close();
open (打开文件)
   头文件:
   #include <sys/types.h>
   #include <sys/stat.h>
   #include <fcntl.h>
   定义函数:
   int open(const char * pathname, int flags);
   int open(const char * pathname, int flags,mode_t mode);
   参数分析:
   pathname --> 路径+名字
   flags    -->所能使用的旗标
       O_RDWR 以可读写方式打开文件,利用 OR (|) 运算符组合。
       O_CREAT 若欲打开的文件不存在则自动建立该文件。
       ......
    mode --> 只要在文件需要创建的时候生效,其余的情况无效
       用来表示文件创建时的初始权限值
       0654 --> 0 八进制
                6 拥有者可读+可写
                5 同组用户可读+可执行
                4 其他用户可读
                或者使用:
                S_IRUST|S_IWUSR|S_IRGRP|S_IXGRP|S_IROTH
   返回值:
         成功 :返回一个文件描述符(new file descriptor)
         int --> 整型-->数字-->编号-->文件
         失败 : 返回-1,错误号码会被设置

注意:

  • 文件描述符仅用于当前进程。
  • open 的返回值必须得接收,不然的话无法访问文件。

错误号码:

perror( 打印出错误原因信息字符串)
   头文件:
   #include <stdio.h>
   定义函数:
   void perror(const char *s);
   参数分析:
   s --> 错误提示信息+自动接上错误原因
   返回值:
   无
strerror (返回错误原因的描述字符串)
  头文件:
  #include <string.h>
  定义函数:
  char * strerror (int errnum);
  参数分析:
  errnum -->错误号码,系统定义的宏 errno
  返回值:
  返回描述错误原因的字符串指针

注意:
strerror 需要多包含一个错误号码的头文件 <errno.h>

实例代码:

int main (int argc , char const *argv[])
{
   char *FileName = "./123.txt";
   int fd_test = open (FileName, O_WRONLY | O_CREAT, 0666);
   if(-1 == fd_test)
   {
      printf("不能打开文件:%s,原因是%d\n", FileName, strerror (errno));
      return -1;   // 返回值 -1 ,不然会报错
   }
   else
   {
      printf("可以打开文件:%s ,描述符%d\n" ,FileName , fd_test);
   }
   return 0;
}
write (将数据写入已打开的文件内)
   头文件:
   #include <unistd.h>
   size_t write (int fd, const void *buf , size_t count);
   参数分析:
   fd --> 需要写入的文件的描述符
   buf --> 需要写入数据的首地址
   count --> 需要写入的字节数
   返回值:
      返回实际写入的字节数。
      当有错误发生时则返回-1,错误代码存入 errno 中
close (关闭文件)
   头文件:
   #include <unistd.h>
   定义函数:
   int clost(int fd);
   参数分析:
   fd --> 需要关闭的文件描述符
   返回值:
   若文件顺利关闭则返回 0
   发生错误返回 -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值