IO学习系列之使用read和write复制文件内容

这篇具有很好参考价值的文章主要介绍了IO学习系列之使用read和write复制文件内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • read函数:
  • 功能:从文件fd中读取count个字节,存放进指针buf
  • 具体内容:
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);
/*
参数:

    	fd:	文件描述符
    	
    	buf:	用来存储读取内从的缓冲区的首地址
    	
    	count:	想要读取的字节数
    	
返回值:

    	成功  	实际读取的字节数,且读到文件结尾会返回0
    	
    	失败  	-1  	重置错误码
*/
  • write函数:
  • 功能:把指针buf中的内容,写count个字节文件fd中;
  • 具体内容:
#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);
/*
参数:

    	fd:	文件描述符
    	
    	buf:	要写入的数据的首地址
    	
    	count:	想要写入的字节数
    	
返回值:

    	成功  	实际写入的字节数 (如果返回0,则表示没有写入内容)
    	
    	失败  	-1  	重置错误码
*/
  • 示例代码:
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>


int main(int argc, const char *argv[]){

    if(3 != argc){

        printf("Usage : %s src_file dest_file\n",argv[0]);

        return -1;
    }

    int fd1 = open(argv[1],O_RDONLY);

    if(-1 == fd1)
    {

        perror("open error");

        return -1;
    
    }
    
    int fd2 = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0666);

    if(-1 == fd2)
    {

        perror("open error");

        return -1;
    
    }
    
    int ret = 0;
    char buff[128] = {0};

    while(0 < (ret = read(fd1,buff,sizeof(buff)))){
        

        write(fd2,buff,ret);


    }

    close(fd1);

    close(fd2);
    
    
    return 0;
}

文章来源地址https://www.toymoban.com/news/detail-732321.html

到了这里,关于IO学习系列之使用read和write复制文件内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#,入门教程(28)——文件夹(目录)、文件读(Read)与写(Write)的基础知识

    上一篇:   C#,入门教程(27)——应用程序(Application)的基础知识 https://blog.csdn.net/beijinghorn/article/details/125094837 C#知识比你的预期简单的多,但也远远超乎你的想象! 与 文件 相关的知识,不算多。 作为初学者,先学习 文本文件 的读写,就足够应付好几年了。 文件 自然是

    2024年01月23日
    浏览(59)
  • Python---文件、基本操作:打开open,写入write,关闭close,读取read/readlines,移动光标seek,mode模式

    文件: 内存中存放的数据在计算机关机后就会消失。 要长久保存数据 ,就要使用硬盘、光盘、U 盘等设备。 为了便于数据的管理和检索,引入了 “文件 ”的概念。 像移动硬盘,内存卡,网盘等等。 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予

    2024年02月03日
    浏览(56)
  • C语言读写文件函数:read/write,pread/pwrite,readv/writev,preadv/pwritev,preadv2/pwritev2

    函数原型 示例程序 read/write/pread/pwrite函数比较直观,这里仅示例readv/writev函数用法。 把程序中定义的buf通过writev函数输出到屏幕上。 分析 读写多个缓冲区,有几种策略: 调用read、write分别操作多次 这种方式多次切换内核态,效率最低。 把多个缓冲区复制合并到同一个大的

    2024年02月12日
    浏览(45)
  • Linux 系统调用IO口,利用光标偏移实现文件复制

    用系统调用IO函数实现从一个文件读取最后2KB数据并复制到另一个文件中,源文件以只读方式打开,目标文件以只写的方式打开,若目标文件不存在,可以创建并设置初始值为0664,写出相应代码,要对出错情况有一定的处理,并能够让用户自行输入要复制的文件名。 IO口即指

    2024年02月08日
    浏览(42)
  • android开发在android13中存储权限发生变化,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE无法使用

    原来的两个存储权限在android13中已经无法使用 在android13中读取图片需要以下权限: 视频权限: 音频权限: 如果需要访问pdf,word等其他类型文件,请使用以下权限:

    2024年02月01日
    浏览(35)
  • IO流读取上传文件的内容

     

    2024年01月21日
    浏览(63)
  • read/write和fread/fwrite介绍

    UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write 这里简单的介绍一下他们的区别。 1. fopen 系列是标准的C库函数;open系列是 POSIX 定义的,是UNIX系统里的system call。 也就是说,fopen系列更具有可移植性;而open系列只能用在 POSIX 的操作系

    2024年02月09日
    浏览(41)
  • Linux-open、read、write函数

    1、open函数 详细使用可以使用Linux命令:man 2 open flags参数 :(注意这里可以使用 |来添加多个参数),如: flags三个访问权限参数:( 注意这三个参数在flags中只能出现其中一个 ) O_RDONLY:只读          O_WRONLY:只写          O_RDWR:读写 flags其他参数: O_CREAT:若文件不

    2024年02月15日
    浏览(43)
  • c++ 继承方式高内聚read write function操作

    派生类增加传入指定函数

    2024年02月08日
    浏览(44)
  • Linux0.11内核源码解析-read_write.c

    目录  sys_lseek read write read_write.c主要是实现文件系统调用read(),write()和lseek()三个功能 read和write函数分别是调用file_dev.c/pipe.c/block_dev.c/char_dev.c实现相对应的函数 lseek实现系统调用将对文件句柄对应文件结果体中的当前读写指针进行修改,对于读写指针不能移动的文件和管道文

    2024年02月13日
    浏览(45)