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

一:功能分析

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[ ]:字符指针数组,每一个字符指针指向一个环境变量(字符串);

Windows下dos中 copy命令的实现相关推荐

  1. Windows下cmd中cd命令不起作用的原因和解决办法

    问题如图: 即便是输入了cd指令,但是并没有跳转. 原因: 实际上cmd换目录跨磁盘的话需要先进行磁盘的转换. 解决办法: 先输入: D: 进行磁盘转换 然后cd到对应目录下即可:

  2. windows下DOS命令关闭占用的端口

    windows下DOS命令关闭占用的端口 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用. ...

  3. windows下cmd中命令操作

    windows下cmd中命令: cls清空 上下箭头进行命令历史命令切换 --------------------------------------------------------------- ...

  4. windows下cmd中输入nvidia-smi显示不是内部或外部命令解决方法!

    windows下cmd中输入nvidia-smi显示不是内部或外部命令解决方法! 我的cuda.cudnn等都是可以正常使用的,只是查看不了显存,在查看了很多博客后下面这个方法亲测有效: 在环境变量的 ...

  5. windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同

    windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同 介绍ubuntu系统下配置docker下GPU使用环境的文章很多,本文算是一个比较性梳理. 主要比较一下wsl ...

  6. python2没有pip命令_解决Windows下python和pip命令无法使用的问题

    一. python命令找不到 安装python之后经常会出现下面的问题 , python命令找不到,这是因为Windows的环境变量中没有定义python的安装路径 这个时候我们先找到python的安 ...

  7. windows 下借助7zip实现命令行解压缩

    windows 下借助7zip实现命令行解压缩 64位电脑下载 https://www.7-zip.org/a/7z1805-x64.exe 安装 安装目录下所有文件如下: 在命令行下只需要用到 7z ...

  8. DOS中SET命令的详细用法

    DOS中SET命令的详细用法 例子: @echo off set var=我是值 echo %var% pause 请看 set var=我是值 ,这就是BAT直接在批处理中设置变量的方法! set ...

  9. Windows下能查看日志命令的工具tail及其下载、使用方法

    Windows下能查看日志命令的工具tail及其下载.使用方法 除了Linux操作系统下,在Windows操作系统下也可实现tail命令来查看程序运行日志,但要借助一个工具:tail.exe 1 ta ...

最新文章

  1. 谁说技术男不适合养猫!90后程序员2天做出猫咪情绪识别软件
  2. python.freelycode.com-快速提示-使用Modin加速Pandas
  3. C#入门篇5-5:流程控制语句 dowhile
  4. Charles 某音最新版本抓包环境搭建
  5. Spring框架IoC和传统bean调用的区别
  6. pythonfor循环break_python 中 for 循环 if循环 break
  7. SAP Spartacus SpartacusB2cConfigurationModule 的使用场景
  8. Java 8 Friday Goodies:新的新I / O API
  9. java servlet是单例吗_关于java:为什么apache servlet是单例?
  10. fetch请求报错:
  11. 我的git仓库,顺记github配置
  12. DVWA-SQL注入(SQL Injection)低/中/高级别
  13. oracle24550,ORA-24550: signal received:这个问题的原因及解决办法
  14. 破解云数据库MongoDB运行变慢指南
  15. Hadoop SequenceFile存储格式入门
  16. ios开发闹钟步骤_苹果快捷指令自动化(起床关闹钟后自动播放音乐)
  17. 节点服务器列表文件,服务器emule必备知识(更新服务器列表与kad节点文件)
  18. c++实现n阶行列式计算
  19. ps怎么加底部阴影_PS三分钟之如何在PS中给物体添加阴影
  20. 手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过程

热门文章

  1. 3.通过powercfg查看电源报告
  2. android字高度充满textview,TextView文字实际高度分析
  3. 抄送列表 - 牛客网题解
  4. 笔记本N卡掉显驱问题个人记录
  5. GBase 8c V3.0.0数据类型——类型转换函数
  6. JAVA方法调用过程(最详细的解释)
  7. 2014阿里云AWDC参会总结
  8. java 圆角_CSS3倒圆角
  9. 设计模式之发布订阅模式
  10. 《Flask develoment》云平台heroku部署过程