open/creat/read/write/lseek函数

#include<unistd.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>

#define BUFFER_SIZE 10
#define SRC_FILE_NAME "src_file"
#define DEST_FILE_NAME "dest_file"
#define OFFSET 10

/**
 * open函数用法:
 * int open(const char *path,int oflag)
 * path参数是要打开的或创建的文件名
 * oflag参数是打开或创建文件的属性,O_RDONLY/O_WRONLY/O_RDWR
 * 若成功,则返回文件描述符;若失败,则返回-1
 * 
 * creat函数用法:
 * int creat(const char *path,mode_t mode)
 * path参数是要打开的或创建的文件名
 * mode文件访问权限
 * 若成功,则返回文件描述符;若失败,则返回-1
 * 
 * close函数用法:
 * int close(int fd);
 * 若成功,返回0;若失败,则返回-1
 * 
 * write函数用法:
 * ssize_t write(int fd,const void *buf,size_t nbytes);
 * fd文件描述符
 * buf指定存储器写入数据的缓冲区
 * nbytes指定读出的字节数
 * 若成功,返回已写的字节数;若失败,返回-1
 * 
 * read函数用法:
 * ssize_t write(int fd,const void *buf,size_t nbytes);
 * fd文件描述符
 * buf指定存储器读出数据的缓冲区
 * nbytes指定读出的字节数
 * 若成功,返回已读到的字节数;若失败,返回-1
 * 
 * lseek函数用法:
 * off_t lseek(int fd,off_t offset,int whence)
 * fd文件描述符
 * offset偏移量,每一读写操作所需要移动的距离,单位是字节,可正可负
 * whence当前位置的基点.SEEK_SET:当前位置为文件的开头,新位置为偏移量的大小;SEEK_CUR:当前位置为文件指针的位置,新位置为当前位置加上偏移量;SEEK_END:当前位置为文件的结尾,新位置为文件的大小加上偏移量的大小
 * 若成功,返回新的文件偏移量;若失败,返回-1
 * */

int main()
{
    int src_file,dest_file;
    unsigned char buff[BUFFER_SIZE];
    int real_read_len;

    src_file = open("src_file.txt",O_RDONLY);
    //打开src_file文件

    dest_file = open(DEST_FILE_NAME,O_WRONLY | O_CREAT,S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
    //打开或创建dest_file文件

    if(src_file <0 || dest_file <0)
    {
        printf("Open File error\n");
        exit(1);
    }
    //判断src_file、dest_file文件合法性

    lseek(src_file,10,SEEK_CUR);
    //将源文件的读写指针移到某一位置

    while((real_read_len = read(src_file,buff,sizeof(buff))) > 0)
    {
        write(dest_file,buff,real_read_len);
    }
    //从源文件指定位置读取之后的数据,并写入到目标文件,每次读写10字节

    close(dest_file);
    close(src_file);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值