欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

嵌入式---文件IO的学习

程序员文章站 2022-06-08 22:08:39
...

标题文件IO的学习(自己复习用的,错误请指出)

用代码实现linux中cp复制的功能

#include"stdio.h"
#include"unistd.h"
#include"fcntl.h"
#include"string.h"
int main(int argc,char *argv[])//int argc是记录你在命令行敲入的字符串个数,char *argv[]是存放你写入是字符串
{
int rd_fd,wr_fd;//先把要复制的文件读入用户缓存区,再写入目标文件缓存区
char read_buf[128]={0};//用户空间的缓存
int rd_ret=0;//读的函数的返回值,返回值是字节数

if(argc <3)//3个参数,源文件,目标文件,缓存区
{
    printf("please input src file and des file\n");
    return -1;
}

rd_fd=open(argv[1],O_RDONLY);//以只读的方式打开从命令行敲入的原文件
if(rd_fd <0)
{
    printf("open src file %s failure\n",argv[1]);
    return -2;
}
printf("open src file %s sucess,rd_fd%d\n",argv[1],rd_fd);//%d是3个参数,读、写,执行

wr_fd=open(argv[2],O_WRONLY);//打开目标文件
if(wr_fd <0)
{
    printf("open des file %s failure\n",argv[2]);
    return -3;
}
printf("open des file %s sucess wr_fd=%d\n",argv[2],wr_fd);

while(1)//因为原文件大于缓存区时,要分多次写,所有加死循环
{
    rd_ret=read(rd_fd,read_buf,128);//给rd_ret返回读函数,包括原文件(命令行输入的),读到用户的缓存区,大小
    if(rd_ret <128)//当返回值大于128bit时,表示读完了,跳出循环
        break;
    write(wr_fd,read_buf,rd_ret);//往目标文件写,写在目标缓存区,写的内容是读的缓存区的内容,写的大小就是读的返回值
    memset(read_buf,0,128);//读完了清空缓存
}
//但是跳出循环后,小于128的bit就没有读入,所以再写一次
write(wr_fd,read_buf,rd_ret);

close(rd_fd);
close(wr_fd);
return 0;

}

嵌入式---文件IO的学习

相关标签: 嵌入式