#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;
}
open/creat/read/write/lseek函数
最新推荐文章于 2024-08-08 17:25:34 发布