Linux 下 C 语言实现 Copy 复制命令

本文介绍了如何使用C语言在Linux环境下实现复制命令,包括判断文件和目录是否存在、是否为目录,以及复制文件和目录的详细过程。作者分享了自己的编程作业经验,提供了代码实现,适用于文件和目录的复制场景。
摘要由CSDN通过智能技术生成

上学期的 Linux 课上,老师布置了一个编程作业,要求用 C 语言实现命令行界面下的复制命令,实现文件和文件夹的复制。本来我以为查看一下 Linux 中 cp 命令的源代码,再稍微修改修改就能轻松完成,不过 cp 命令的源代码我实在是没有耐心看下去,所以最后还是按照自己的想法来完成这个作业。我现在简单整理一下代码,方便以后自己查阅,也希望能给网友提供一个参考。

注:有些地方的实现方法可能不是最优的,主要是提供思路。

1.用到的头文件以及自定义的函数

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

int Exist(char* path); //判断文件/目录是否存在
int IsFolder(char* path); //判断是否为目录
int FileCopy(char* src, char* des); //复制文件
int FileCopyToFolder(char* file, char* folder); //复制文件到目录
int CreateFolder(char *folder); //创建文件夹
int FolderCopy(char* src, char* des); //直接复制目录
int FolderCopyToFolder(char* src, char* des); //复制目录到目录

2.复制的各种可能情况

  • 为单个文件、目录创建副本,即第一个参数为已存在的文件名或目录名,第二个参数为用户自定义的文件名、目录名。
  • 将单个文件或目录复制到指定的目录中,即第一个参数为要复制的文件名或目录名,第二个参数为指定要复制到的目录名。
  • 将多个文件或目录复制到指定的目录中,即前面所有的参数为要复制的文件名或目录名,最后一个参数为指定要复制到的目录名。

代码实现:

int main(int argc, char* argv[])
{
    int i; //循环变量

    //根据参数执行不同的操作
    if(argc < 3) //参数不够
    {
        printf("Not enough input arguments!\n");
        return -1;
    }
    else if(argc == 3) //只有两个参数
    {
        if(!Exist(argv[1])) //源文件/目录不存在
        {
            printf("'%s' does not exist!\n",argv[1]);
            return -2;
        }
        else if(IsFolder(argv[1]) && !IsFolder(argv[2])) //直接复制源目录,制作目录副本
        {
            return FolderCopy(argv[1], argv[2]);
        }
        else if(IsFolder(argv[1]) && IsFolder(argv[2])) //将源目录复制到目标目录下
        {
            return FolderCopyToFolder(argv[1], argv[2]);
        }
        else if(!IsFolder(argv[2])) //直接复制源文件,制作文件副本
     
  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值