read()与write()函数

例子:

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>

main()
{
 int fd, size1, size2;
 char s[] = "i love my mother!", buffer[80];
 fd = open("gu", O_WRONLY | O_CREAT); 
 size1 = write(fd, s, sizeof(s));
 close(fd);
 fd =open("gu", O_RDONLY);
 size2 = read(fd, buffer, sizeof(buffer));
 close(fd);
 printf("size1 = %d/nsize2 = %d/n",size1, size2);
 printf("%s/n", buffer);
}
-------------------------------------------------------------------------------

详解:

(1)open()函数

         fd = open("gu", O_WRONLY | O_CREAT); 

         1.打开gu这个文件,且以只写的方式打开,如不存在则创建一个。

         2.返回值为一个整型

 

          open()函数原型:int open(const char *pathname,  int flags)

          参数pathname指向欲打开的文件路径字符串

 

(2)write()函数

         文件已经打开了,现在开始写:

         size1 = write(fd, s, sizeof(s));

 

         write()函数的原型:int write(int fd, const void *buf,  int count);

         1.即:把参数buf所指的内存写入count个字节到参数fd所指的文件内。(文件读写位置也随之移动)

         2.返回值,如果顺利write()  会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中

 

(3)read()函数    //read不是显示在屏幕上  它只不过读到缓冲区里  要显示在终端还要加上printf从缓冲区里读出

        文件要打开,才可以读:

        fd =open("gu", O_RDONLY);
        size2 = read(fd, buffer, sizeof(buffer));       加上:printf("%s/n", buffer);才可在终端显示

 

        read()函数原型:int read(int fd, void *buf, int count);

        1.read() 从参数fd所指的文件中传送count个字节到buf所指的内存中

        2.返回值:如果顺利返回实际读到的字节数(最好将返回值与count做比较,如返回的字节数比所要求读取的字节数少,可能读到了文件尾,从  pipe或终端机读取,或者是read() 被信号中断了读取动作),错误时返回-1,错误代码存入errno中

 

(4)常用的文件权限:

        O_RDONLY     以只读方式打开文件    
        O_WRONLY    以只写方式打开文件

        O_RDWR        以可读写方式打开文件   注:这三种方式是互斥的,不可以同时使用

 

        O_CREAT       若欲打开的文件不存在则自动建立该文件

       

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值