文件I/O实现cp复制功能

copy.c:

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

//a.out   src.txt dest.txt
//argv[0] argv[1] argv[2]
int main(int argc,char *argv[])
{
    char src[20] = {0};
    char dest[20] = {0};
    int fdr;
    int fdw;
    int ret;
    char buf[1024] = {0};

    if(argc != 3){
        printf("Usage: %s src.txt dest.txt\n",argv[0]);
        return -1;
    }
    strcpy(src,argv[1]);
    strcpy(dest,argv[2]);

    /*1.以的方式打开源文件src.txt*/
    fdr = open(src,O_RDONLY);
    if(fdr < 0){
        perror("open");
        return -1;
    }

    /*2.以写的方式打开目标文件 dest.txt ,如果不存在,则创建*/
    fdw = open(dest,O_WRONLY | O_CREAT,0755);
    if(fdw < 0){
        perror("open");
        return -1;
    }

    /*3.把src文件的指针移动到文件头*/
    lseek(fdr,0,SEEK_SET);

    /*3.循环的读取src.txt ,直到结束*/
    while(1)
    {
        memset(buf,0,sizeof(buf));    //清零
        ret = read(fdr,buf,sizeof(buf)-1);
        if(ret > 0){

            /*4.把读到的内容写入到 dest.txt*/
            write(fdw,buf,ret);
        }else if(0 == ret){

            /*读取结束*/
            printf("read over!\n");
            break;
        }else{
            perror("read");
            break;
        }
    }

    /*5.关闭*/
    close(fdr);
    close(fdw);

    return 0;
}
时间: 2024-07-29 15:22:01

文件I/O实现cp复制功能的相关文章

linux命令,文件与目录(cp,pwd,mkdir,rmdir;ls,cp,rm,mv,basename,dirname;cat,tac,more,less,head,tail,touch,umask,chattr,file,which,locate,find)

1.目录操作: (1)cd  (切换目录) cd ~   回到主目录 cd      回到主目录 cd ..   回到上层目录 cd -    回到刚才的目录 cd /var/spool/mail    绝对路径 cd ../mqueue     相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写) (2)pwd (显示当前目录) pwd   显示当前目录 pwd -P   显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径) (3)mkdir (

linux使用su切换用户提示 Authentication failure的解决方法&amp; 复制文件时,报cp: omitting directory `XXX&#39;

linux使用su切换用户提示 Authentication failure的解决方法:这个问题产生的原因是由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd Password:你当前的密码 Enter new UNIX password:这个是root的密码Retype new UNIX password:重复root的密码然后会提示成功的信息. 在说明一点,使用su和sudo是有区别的,使用su切换用户需要

linux 复制文件时,报cp: omitting directory `XXX&#39;

今天在用linux命令进行文件复制时omitting cp -i BBS /opt/workspace/apache-tomcat-6,参数用的是 -i),所以也不太熟悉,原来,还有子目录文件,而是必须要把BBS目录里的子目录文件全部都要复制过去才行:“cp -r BBS /opt/workspace/apache-tomcat-6,如果遇到,也必须要用-r 这个命令选项:rm -r BBS 从这里可以知道 -r  这个选项表示递归的意思 linux 复制文件时,报cp: omitting di

Linux文件与目录管理之:cp,mv,rm

在对Linux中的文件与目录进行管理时,cp(copy).mv(move).(remove)是最常用的三个命令,那么这三个命令的具体用法如何呢? 复制文件或目录:cp cp命令的主要作用就是复制文件或目录,其命令语法为: cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 可以看出,对于cp命令,源文件可以为单个文件.多个文件或目录,目标文

linux-14基础命令之-复制(cp)移动(mv),删除(rm),拷贝文件(dd)

1.cp 命令用于复制文件或者目录 格式为:cp[选项]源文件  目标文件 复制名录有三种情况: @1.目标文件是一个目录,将源复制到该目录下:  @2.目标文件是一个文件,将源文件覆盖该文件: @3. 文件文件不存在,将复制源文件并修改为目标文件的名称: cp 命令参数 参数 作用 -p 保留原始文件的属性 -d 若对象为“连接文件”则保留该“连接文件"属性 -r 递归持续复制 -i  如目标文件存在,则询问是否覆盖 -a 相当于-pdr(p,d,r 为上述的参数) 如:创建一个名为insta

Centos下执行cp命令式提示略过文件夹

今天在复制一个文件夹到另一个文件夹的时候cp ./res /usr 的时候出现了问题,提示我的是: cp略过了文件夹 后来我找了一下 在网上search了一下CP命令的用法: CP命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. [语法] cp [选项] 源文件或目录 目标文件或目录 [说明]该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中. [含义] - a 该选项通常在拷贝目录时使用.它保留链接.文件属性,并递归地

Shell命令-文件及目录操作之cp、find

文件及目录操作 - cp.find 1.cp:复制文件或目录 cp命令的功能说明 cp命令用于复制文件或目录. cp命令的语法格式 cp [OPTION]... SOURCE... DIRECTORYcp [参数选项] [源文件或源目录] [目标文件或目录] cp命令的选项说明 cp 选项就几个,表1为 cp命令的参数及说明: 表1: cp命令的参数及说明 参数选项 解释说明(带*的为重点) -r 复制目录 * -p 保持文件或目录属性 -a 相当于同时使用参数-d,-p,-r * -i 提示是

linux命令行大全-第四章【文件操作mkdir cp mv rm ln】

pwd:显示当前目录 date:显示当前日期 cal:显示日历 ls:列出目录内容 cd:改变当前工作目录 ‘.’:代表工作目录 ‘..’:代表工作目录父目录 进入当前目录的父目录:cd /home 和 cd .. 进入当前目录的子目录:cd jeremy 和 cd ./jeremy 1.创建一个目录:mkdir playground 2.进入该目录:cd playground (也可以使用cd ./playground) 3.创建两个子目录:mkdir dir1 dir2 (目录下创建好了两个

Linux CentOS 复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件

一.Linux 复制文件语法 1. cp [option] src dest 2. option 可选参数如下: -a:是指archive的意思,也说是指复制所有的目录 -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身 -f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制 -i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作 -l:建立硬连接(hard link)的连接文件,而非复制文件本身 -p:与文件的属性一起复制,