C++完成文件的拷贝工作且源文件及目的文件的名字与路径均由命令行参数来提供
需求分析:
本程序主要解决的是: 编程序利用get与put成员函数完成文件的拷贝工作,假设被拷贝的“源文件”以及拷贝到的“目的文件”的名字与路径均由命令行参数来提供。即编制如下的程序“构架”:void main(int argc, char* argv[ ]) 。
8.2 概要设计:
本程设计思路:本程序主要解决的问题是文件的复制问题。虽然此程序中被拷贝的“源文件”以及拷贝到的“目的文件”的名字与路径均由命令行参数来提供,即在主函数main()设置了形式参数,不过大体上程序设计思路并未发生根本改变,命令行参数带有三个参数:程序名、源文件名和目的文件,该程序调用eof()函数来判断文件是否结束,当文件结束时eof()函数返回非0值,文件未结束时返回0值。
程序流程图(如下图):
8.3 详细设计与编码:
见上传程序。
8.4 调试分析:
在调试过程中程序,遇到的主要问题:对于程序的一些细节问题考虑的不是很全面,对于选择条件的设置不是很合理。同时在VC6集成开发环境下,运行这种main带参数的程序之前,要使用菜单命令,通过如下步骤来设置命令行参数(程序参数):Project → Settings → Debug → 在“Program arguments:”框内,输入以空格分割的各命令行参数,如,“aa.cpp bb.cpp”(该框为空时,表示没有命令行参数)→ OK。由于开始时未仔细阅读有关资料,导致程序无法输出正确结果,后来请教同学才解决了问题。其次,源文件必须已经存在。///////////////
程序执行的结果:
其中源文件为文件f1.txt,目的文件为f2.txt
8.5 用户使用说明:
本程序的用户使用较简单,用户运行程序前必须使用菜单命令,仔细设置命令行参数(程序参数),同时必须保证源文件已经存在,其他方面没有较高要求。
8.6 设计心得:
通过查阅资料和实际的动手实践,我对于文件操作有了进一步的了解,了解到eof()成员函数的作用———判断文件是否结束。同时对命令行参数(程序参数)的使用有了初步的认识,对于get与put成员函数的使用方法加深了认识。了解到自己对vc++的认识还很肤浅,自己还有很多需要学习和提高的地方。
#include<fstream>
#include<stdlib.h>
#include<iostream>
using namespace std;
void main(int argc, char* argv[ ])
{
char ch;
fstream soure_file,dest_file;
if(argc!=3)
{
cout<<"Uncorrect numbers of arguments\n";
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/
if(!soure_file)
{
cout<<"Error opening destination"<<endl;
exit(1);
}
dest_file.open(argv[2],ios::out);
if(!dest_file)
{
cout<<"Error opening destination"<<endl;
exit(1);
}
//fin.get(ch);
while(!soure_file.eof())
{ //从头读到文件结束(当前符号非文件结束符时继续)
soure_file.get(ch); //对流soure_file进行读
dest_file.put(ch); //对流dest_file进行写
}
soure_file.close();
dest_file.close();1832