- ベストアンサー
名前をつけて保存する
コマンドライン上に出力された結果を、コマンドライン上でファイル名を指定し、テキストファイルとして保存することは出来ますでしょうか? 作成するファイルは、作業中のフォルダに新規作成する、としたいのですが… たとえば、 カレントディレクトリがC\:/aaaであるとして、 bbb.cを実行したとき、 ----- 以下コマンドライン上の出力 ----- C:\aaa>aaa 1~nまでの素数を表示します nを入力 : 50 1~50までの素数は 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 です。 保存するファイル名を入力 : ccc.txt (ccc.txtと入力してenterを押すと保存) C:\aaa -------------- ここまで -------------- 上記の結果の、『1~nまでの…』から『です。』までを、ccc.txtとしてディレクトリC\:/aaaに新規作成したいのですが… どなたか出来る方がいらっしゃいましたら、ぜひご教授お願い致します。 もし、C言語でこのようなコトをするのは不可能であるのならば、『無理ですよ』という旨を伝えて頂ければ結構でございます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
できますよ。 ファイルに保存するのではなくコマンドライン上でなら 質問者の方は出来るのですよね? コマンドラインに表示する際に使用する関数printfが ありますがこれと同じような関数fprintf を利用すれば 出来ます。
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
リダイレクトすればよいのでは? bbb.exeの標準出力をccc.txtに書き込むのであれば、 bbb > ccc.txt ですみます。 どうしてもC言語で実現したのであれば、#1の方が回答されているように、printf → fprintfのように書き換えるか、freopenでstdoutを別のファイルに結びつければ可能になります。
お礼
今回はCのプログラムの中で実現したかったので、#1の方の方法を使わせていただきました。 ご回答いただき、大変ありがとうございました。
- du0315
- ベストアンサー率20% (1/5)
ちなみに、UNIXには、まさにその目的のための script というコマンドが存在します。 $ script ファイル名 とすると、それ以降のコマンド入力と出力の内容が、ファイルに出力されていきます。 最後は $ exit で終わります。 Linuxなどが身近にあれば、そのソースを見てみてはいかがでしょうか?無くてもWebで探せばあるのでは・・・??
お礼
私はどうにもUNIXにあまり良いイメージがないもので、もっぱらWinユーザーです(笑 でも友人がUNIX環境なので、教えてあげたいと思います。
お礼
fprintfなんて関数があったんですね。 無知ゆえに、そんな関数があることを知りませんでした… fprintfを使うコトで、いとも簡単に出来ました。 どうもありがとうございました。