c++文件复制
本帖最后由 ycg 于 2013-3-24 11:22 编辑初学c++,下面这段代码编译没错,但一运行程序就停止工作
#include<iostream>
#include<fstream>using namespace std;
int main(int argc,char* argv[])
{
cin>>argv>>argv>>argv;
ifstream in(argv);
ofstream out(argv,ios::out); if(!in)
cout<<"read error!"<<endl;
if(!out)
cout<<"read error!"<<endl; if (argc!=3)
{
cout<<"请按正确形式重新输入:\n"<<endl;
} char ch;
while(in>>ch)
{
out<<ch;
}
in.close();
out.close();
return 0;
}
ycg 发表于 2013-3-24 20:51 static/image/common/back.gif
谢谢!
但是我是想模仿下面这段c代码写的
我认为主要的问题是你不明白命令行参数。所以代码本身没错,但你无法以正确的方式运行它。 #include <fstream>
#include <iostream>
using namespace std;
int main( int argc,char * argv[] )
{
if( argc != 3 ) {
fprintf( stderr,"正确格式:filecopy.exe 源文件名 目标文件名\n");
exit(1);
}
fstream in( argv, ios::in | ios::binary );
if( !in ) {
cerr << "文件" << argv << "读取失败!" <<endl;
exit(1);
}
fstream out( argv,ios::out | ios::binary );
if( !out ) {
cerr << "文件" << argv << "创建失败!"<< endl;
exit(1);
}
char ch;
ch = in.get();
while( !in.eof() ) {
out << ch;
ch = in.get();
}
cout << "成功复制一个文件" << endl;
in.close();
out.close();
return 0;
}
你可以借鉴一下 argv是参数 应该不能再输入吧 /*
1.建立文件C:\data.txt,里面随便写点什么
2.运行程序
3.得到文件C:\output.txt,内容和C:\data.txt一样(所有空白字符都将消失)
*/
#include<iostream>
#include<fstream>
using namespace std;
int main(int argc,char* argv[]){
//cin>>argv>>argv>>argv;
//ifstream in(argv);
ifstream in("C:\\data.txt");
//ofstream out(argv,ios::out);
ofstream out("C:\\output.txt",ios::out);
if(!in)
cout<<"read error!"<<endl;
if(!out)
cout<<"read error!"<<endl;
//if (argc!=3) {
// cout<<"请按正确形式重新输入:\n"<<endl;
//}
char ch;
while(in>>ch) {
out<<ch;
}
in.close();
out.close();
return 0;
} 仰望天上的光 发表于 2013-3-24 19:47 static/image/common/back.gif
谢谢!
但是我是想模仿下面这段c代码写的#include <stdio.h>
#include <stdlib.h>
int main( int argc, char* argv[] )
{
FILE *in, *out;
int ch;// char
if( argc != 3 )
{
fprintf( stderr, "输入形式: copyFile 源文件名 目标文件名 \n" );
exit( EXIT_FAILURE );
}
if( ( in = fopen( argv, "rb") ) == NULL )
{
fprintf( stderr, "打不开文件: %s \n", argv );
exit( EXIT_FAILURE );
}
if( ( out = fopen( argv, "wb") ) == NULL )
{
fprintf( stderr, "打不开文件: %s \n", argv );
fclose( in ); /
exit( EXIT_FAILURE );
}
while( (ch = getc(in)) != EOF ) // EOF == end of file
{
if( putc( ch, out ) == EOF )
{
break;
}
}
if( ferror( in ) )
{
printf("读取文件 %s 失败! \n", argv );
}
if( ferror( out ))
{
printf("写入文件 %s 失败! \n", argv );
}
printf("成功复制1个文件!\n");
fclose( in );
fclose( out );
return 0;
} 仰望天上的光 发表于 2013-3-24 22:44 static/image/common/back.gif
我认为主要的问题是你不明白命令行参数。所以代码本身没错,但你无法以正确的方式运行它。
总算弄明白了,也谢谢ls几位哥们 ycg 发表于 2013-3-24 23:50
总算弄明白了,也谢谢ls几位哥们
能问一下正确的运行方式是怎样的吗?????????
页:
[1]