ファイルをn等分するプログラム

[戻る]
tydg 2005/07/04(月) 17:16:46
こんにちわ。
下のプログラムはファイルを2等分するものなのですが、
今度は下のを参考にコマンドラインで入力したn個の数に分割したいと思っています(n
等分)。が、n個の出力ファイルを作るなど、なかなかうまくいきません(T_T)
何かいい方法はないでしょうか?? よろしくお願いしますm(__)m
#include<iostream>
#include<fstream>
using namespace std;

int main (int argc,char *argv[])
{
    ifstream in(argv[1],ios::in | ios::binary);
    if(!in){
        cout << "Cannot open file.\n";
        return 1;
    }

    ofstream out1(argv[2],ios::out | ios::binary);
    if(!out1){
        cout << "Cannot open file.\n";
        return 1;
    }
    
    ofstream out2(argv[3],ios::out | ios::binary);
    if(!out2){
        cout << "Cannot open file.\n";
        return 1;
    }
         char ch;
    int h,i;
    long a;
    
    in.seekg(0,ios::end);
    a=in.tellg();
    h = a /2;
         cout << "入力ファイルのサイズは" << a << "byteです。\n";
    
    in.seekg(0,ios::beg);

    for(i=0; i<h; ++i){
        in.get(ch);
        out1.put(ch);
    }

    for(i=h; i<a; ++i){
        in.get(ch);
        out2.put(ch);
    }
    
    in.close();
    out1.close();
         out2.close();
   
   return 0;
}

wood 2005/07/04(月) 19:12:45
どっかの課題見たいな内容だけど?

何が、どう、うまくいかないのかな?

a=元サイズ / n

for(x=1;x<n;x++) {
  sprintf(file_nm[x],"out%3.3d.dat",x);
  ofstream out1(file_nm[x],ios::out | ios::binary);
 
  aの分、読み込んで書き込む
 out1.close();

}
in.close();

こんな感じじゃないの?

tib 2005/07/04(月) 21:07:21
質問者へ。

↑のサンプル、変数「file_nm」の型は何でしょう?
ここ、結構重要かも、なので注意してくださいね。

古いスレッドには追加発言できません。