read和write函数

/*
//read
    ssize_t read(int fd, void *buf, size_t count);
    -fd:文件描述符,通过open获得
    -buf:需要读取的数据的存放位置,数组的地址
    -count:指定数组的大小

    返回值:
        -成功
            >0:返回实际读取到的字节数
            =0:读取到文件末尾
        
        -失败
            -1


    //write
    ssize_t write(int fd, void *buf, size_t count);
    返回值:写入文档的字节数(成功);-1(出错)
*/

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

int main(){
    //1.打开要复制的文件
    int srcfd = open("from.txt", O_RDONLY);
    if(srcfd == -1) {
        perror("open file error");
        return -1;
    }

    //2.创建新文件
    int destfd = open("to.txt", O_WRONLY | O_CREAT, 0664);
    if(destfd == -1) {
        perror("create new file error");
        return -1;
    }

    //3.频繁读写
    char buf[1024] = {0};//数组
    int len = 0;

    while((len = read(srcfd, buf, sizeof(buf))) > 0) {
        write(destfd, buf, len);
        printf("per read length:%d\n",len);//此例子文件内容长度小于设置的1024大小,所以就一次读写
    }

    //4.在新文件末尾追加内容
    int appendfd = open("to.txt", O_WRONLY | O_APPEND);

    if(appendfd == -1) {
        perror("append error");
        return -1;
    }

    char append[1024] = {"hello,world!\n"};
    
    int appendwrite = write(appendfd, append, sizeof(append));
    if(appendwrite == -1) {
        perror("append write error");
        return -1;
    }

    //5.关闭文件
    close(appendfd);
    close(destfd);
    close(srcfd);


    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值