• ベストアンサー

標準出力先を変える

Windowsで作ったソフトをコマンドラインから実行するときに例えば prog.exe > test.txt のようにするとリダイレクトして標準出力をtest.txtにすることは出来ますが、これをプログラムの中で変えることは出来ますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

freopen()という標準関数があります。 freopen("test.txt", "w", stdout); とするとリダイレクトができます。 もどすには freopen("CON", "w", stdout); とすればいいようです。 (以下のプログラムで確認。XPのコマンドプロンプト上で) ---------------- #include <stdio.h> int main() { printf("abc"); freopen("test.txt", "w", stdout); printf("def"); freopen("CON", "w", stdout); printf("ghi"); return 0; } ---------------- ただし、こういうややこしいことは、 個人的にはあまりお勧めはしません。(なんとなく)

参考URL:
http://www.catnet.ne.jp/kouno/c_faq/c12.html#33
earth
質問者

補足

ありがとうございます。 ちなみに、標準出力をソケットにするなんてことは出来ますか?

その他の回答 (1)

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

freopenを使います。 #include <stdio.h> int main() { freopen("test.txt","w",stdout); printf("testscript\n"); return 0; }

関連するQ&A