Windows下dos中 copy命令的实现

Windows下dos中 copy命令的实现实现的的功能:复制文件功能一:功能分析1.1windows系统下的dos命令中指令copy能实现文件的复制。比如:copylog.txtlog1.txt就是将log.txt文件复制一份,复制后的文件名称为log1.txt图例:1.2copy命令实现要求:自己创造一个命令,比如:test.exelog.txttest.bak有三个参数,第一个参…

大家好,又见面了,我是你们的朋友全栈君。

实现的的功能:复制文件功能

一:功能分析

1.1windows 系统下的 dos命令中 指令 copy 能实现文件的复制。

比如: copy log.txt log1.txt 就是将log.txt 文件复制一份,复制后的文件名称为 log1.txt
图例:在这里插入图片描述

1.2copy命令实现要求:

自己创造一个命令,比如:test.exe log.txt test.bak 有三个参数,第一个参数是模拟实现的copy的可执行程序,第二个参数要拷贝的文件名称,第三个文件是拷贝后的文件名称。

1.3思路分析:
  1. copy命令 由我们写的程序来实现
  2. 要拷贝的文件名称以及拷贝后的名称,由程序自动获取和输出,不用自己输入。可以利用main函数的参数列表 来实现这个功能
  3. 复制过程 就是打开文件A,将文件A中的内容逐字节写到文件B中。
    总结一下:核心内容就两点,main函数的参数列表的使用 和 文件的读写操作。

二:实现代码:

int main(int argc,char* argv[], char* envp[])
{
	FILE *fRead = NULL;
	FILE *fWrite = NULL;
	FILE *tmp = NULL;
	char ch ;
	//命令行参数 只有三个
	if (argc != 3)
	{
		//perror("orders are wrong");
		//exit(EXIT_FAILURE);
		printf("参数有误");
		return 0;
	}
	
	tmp = fopen(argv[1], "r");
	if (tmp == NULL)
	{
		perror("open file for read failed:");
		exit(EXIT_FAILURE);
	}
	fRead = tmp;

	//打开要写的文件
	tmp = fopen(argv[2],"w");
	if (tmp == NULL)
	{
		//先关闭已经打开的文件
		fclose(tmp);
		tmp = NULL;
		perror("open file for write failed:");
		exit(EXIT_FAILURE);
	}
	fWrite = tmp;

	//拷贝过程
	while ( (ch = fgetc(fRead)) != EOF)
	{
		//逐字符写入文件
		fputc(ch,fWrite);
	}

	//关闭文件
	fclose(fRead);
	fRead = NULL;
	fclose(fWrite);
	fWrite = NULL;
	system("pause");
	return 0;
}

运行结果:打开复制后的文件,与原文件一样。 在这里插入图片描述


补充:main函数的参数列表介绍:

main( int argc, char *argv[ ], char *envp[ ] )
{

program-statements
}

  • int argc:argc是整型变量,表示命令行参数的个数(argc 包含可执行程序名称在内,还包括参数在内)
  • char *argv[ ]:字符指针数组,每个元素是字符指针,指向一个字符串,这些字符串就是命令行中的每一个参数(字符串);
  • char *envp[ ]:字符指针数组,每一个字符指针指向一个环境变量(字符串);
    在这里插入图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161264.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中有哪些集合,集合中有哪些类?

    Java中有哪些集合,集合中有哪些类?Java中所有的类都位于java.util包下,主要由两个接口派生出来,分别是Collection和Map.Collection包含了List和Set两大分支。Map是一个映射接口。Set、Map、List可以看做集合的三大类。而遍历集合的工具有Iterator和Enumeration;Arrays和Collection是操作数组集合的两个工具类。一、Java中的集合主要分为四类:1、L…

    2022年7月7日
  • 十款移动APP开发框架

    十款移动APP开发框架  十款移动APP开发框架:1.jquerymobile框架2.bootstrap框架3.ionic框架4.MobileAngularUI框架5.IntelXDK框架6.AppceleratorTitanium框架7.SenchaTouch框架8.KendoUI框架9.PhoneGap框架10.mui框架  1.jquerymobile框架  jQue…

    2022年5月31日
  • 比较文本相似度_比较文本差异的工具

    比较文本相似度_比较文本差异的工具from:https://cloud.tencent.com/developer/news/218062本文作者为YvesPeirsman,是NLP领域的专家。在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的。词嵌入(wordembeddings)已经在自然语言处理领域广泛使用,它可以让我们轻易地计算两个词语之间的语义相似性,或者找出与目标词语最相似的词语。然而…

    2022年10月30日
  • MQTT 服务器介绍

    MQTT 服务器介绍MQTT发布订阅模式简述MQTT是基于发布(Publish)/订阅(Subscribe)模式来进行通信及数据交换的,与HTTP的请求(Request)/应答(Response)的模式有本质的不同。订阅者(Subscriber)会向消息服务器(Broker)订阅一个主题(Topic)。成功订阅后,消息服务器会将该主题下的消息转发给所有的订阅者。主题(Topic)以‘…

    2022年5月9日
  • datagrip激活码_最新在线免费激活[通俗易懂]

    (datagrip激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
  • debian6下载_印象笔记下载安装

    debian6下载_印象笔记下载安装安装debian真是费劲周折,从网上下载的是debian6.04的CD版本,只下载了CD1,里面包含的软件非常少,所以很多软件都需要自己动手安装了。一、下载镜像可以到Debian的官网http://cdimage.debian.org/debian-cd/6.0.6/i386/iso-cd/去下载最新的6.06版本,因为官网下载太慢,所以我到六维空间上面下了个6.04版本的CD1。CD1只

    2022年10月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号