アプリ版:「スタンプのみでお礼する」機能のリリースについて

2つのバイナリ形式のデータが出力されたテキストファイル
「C:\a.txt」「C:\b.txt」の中身を結合させて、
1つのファイル「C:\c.txt」にまとめようと思っています。

ファイルパスを指定し、CFile::OpenとCFile::Readで
一つずつファイル内容を読み出し、c.txtに書き出す方法だと少し手間がかかるので、
より簡易な方法で一つのファイルにまとめたいのですが、
何か効率的で良い方法があれば、教えていただけませんでしょうか?
例えば、Linuxでいうcatコマンドのような方法があれば理想的なのですが。。
よろしくお願い致します。

開発環境:VC++2005、MFC

A 回答 (4件)

 こんにちは。

補足頂きました。
 駄目でしたか。ファイルパスが不完全である事が考えられます。
 起動したフォルダ内に置いてあれば、ファイル名の指定だけで出切る筈です。
 exeファイルのあるフォルダ(\\debugフォルダの中)にa.txtとb.txtを置いて試しても無理でしょうか(成功すれば合成されたc.txtが出て来る筈です)。
 
 此れで無理であれば、当方ではチョッと分からないです。
 まあ、仮に::system()が使えなくても、其処まで拘る必要は無くて、CFileで書いた方がコードは長いですが、実行速度は速いと思います。

//以下の場合a.txtに追記
CFile dst(TEXT("a.txt"), CFile::modeWrite);
CFile src(TEXT("b.txt"), CFile::modeRead);
dst.SeekToEnd();
LPSTR pszBuf = (LPSTR)::malloc(src.GetLength());
src.Read(pszBuf, src.GetLength());
dst.Write(pszBuf, src.GetLength());
::free(pszBuf);
    • good
    • 0
この回答へのお礼

exeファイルと同じ場所にテキストを置いて実行しましたが、
合成されたファイルは生成されませんでした。
しかし、CFileで書いたコードを試したところ、期待動作をさせることができました。
大変助かりました。ありがとうございました。

お礼日時:2009/06/07 10:52

 こんばんは。

以下で出来ませんか。
 ::system("copy a.txt + b.txt c.txt");

この回答への補足

ご回答ありがとうございます。
ご教示頂いたコードそのまま実行しましたが、
テキストの内容はそのままで、期待動作となりませんでした。。
何か他に操作もしくは条件が必要なのでしょうか?

補足日時:2009/05/31 16:00
    • good
    • 0

連結はcopyコマンドでも可能です。



copy a.txt+b.txt c.txt
又は、
copy *.txt c.txt

この回答への補足

ご回答ありがとうございます。
DOSプロンプト環境ではなく、C++のプログラム上で処理を行いたいのです。
情報が足りず申し訳ありませんでした。

補足日時:2009/05/24 17:33
    • good
    • 0

>例えば、Linuxでいうcatコマンドのような方法があれば理想的なのですが。


windowsはtypeコマンドで
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!