鱼C论坛

 找回密码
 立即注册
查看: 2612|回复: 7

c++文件复制

[复制链接]
发表于 2013-3-24 11:20:51 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 ycg 于 2013-3-24 11:22 编辑

初学c++,下面这段代码编译没错,但一运行程序就停止工作
#include<iostream>
#include<fstream>using namespace std;
int main(int argc,char* argv[])
{
 
 cin>>argv[0]>>argv[1]>>argv[2];
 ifstream in(argv[1]);
 
 ofstream out(argv[2],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;
}

最佳答案

查看完整内容

我认为主要的问题是你不明白命令行参数。所以代码本身没错,但你无法以正确的方式运行它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-24 11:20:52 | 显示全部楼层

我认为主要的问题是你不明白命令行参数。所以代码本身没错,但你无法以正确的方式运行它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-24 12:11:40 | 显示全部楼层
#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[1], ios::in | ios::binary );
        if( !in ) {
                cerr << "文件" << argv[1] << "读取失败!" <<  endl;
                exit(1);
        }

        fstream out( argv[2],ios::out | ios::binary );
        if( !out ) {
                cerr << "文件" << argv[2] << "创建失败!"  << endl;
                exit(1);
        }
       
        char ch;
        ch = in.get();
        while( !in.eof() ) {
                out << ch;
                ch = in.get();
        }       

        cout << "成功复制一个文件" << endl;
        in.close();
        out.close();

        return 0;
}

你可以借鉴一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-24 19:10:04 | 显示全部楼层
argv是参数 应该不能再输入吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-24 19:47:00 | 显示全部楼层
/*
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[0]>>argv[1]>>argv[2];
        //ifstream in(argv[1]);
        ifstream in("C:\\data.txt");
        //ofstream out(argv[2],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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-24 20:51:08 | 显示全部楼层

谢谢!
但是我是想模仿下面这段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[1], "rb") ) == NULL )
      {
            fprintf( stderr, "打不开文件: %s \n", argv[1] );
            exit( EXIT_FAILURE );
      }

      if( ( out = fopen( argv[2], "wb") ) == NULL )
      {
            fprintf( stderr, "打不开文件: %s \n", argv[2] );
            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[1] );
      }

      if( ferror( out ))
      {
            printf("写入文件 %s 失败! \n", argv[2] );
      }

      printf("成功复制1个文件!\n");

      fclose( in );
      fclose( out );

      return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-24 23:50:56 | 显示全部楼层
仰望天上的光 发表于 2013-3-24 22:44
我认为主要的问题是你不明白命令行参数。所以代码本身没错,但你无法以正确的方式运行它。

总算弄明白了,也谢谢ls几位哥们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-24 12:52:00 | 显示全部楼层
ycg 发表于 2013-3-24 23:50
总算弄明白了,也谢谢ls几位哥们

能问一下正确的运行方式是怎样的吗?????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 23:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表