はじめて投稿します。
知人の作成したアプリケーションのソースを見ながらC++を
勉強し始めた者です。
実は、そのアプリケーション(ウィンドウ起動型)の中で
Console::Write(S"メッセージ: "); ……
というようにコンソール出力しているのですが、
exeを実行しても出力されたメッセージを見つけられません。
ウィンドウ起動型アプリケーションでのコンソール出力先は
どこになるのでしょうか? 勝手にコマンドプロンプトの
ような画面が開いて、そこに出力されるはずなのでしょうか??
この問題を解決できそうなキーワード(コンソール出力先を
指定するメソッドなど)があれば、教えていただければ幸いです。
作成者本人に質問するべきなのでしょうが、現在連絡が取れない
状況のため、こちらに書込みさせていただきました。
環境は Windows2000+visual studio.NET 2003 です。
よろしくお願い致します。
参考になるかわかりませんが。
VisualC++6.0にて
メニューバーから[プロジェクト]→[設定](ダイアログ起動)→[デバック](タブ)
の順に辿り、[プログラム引数]エディットボックスに[>debug.txt]と書きます。
そしてプログラム中でprintf関数を利用すればプログラム終了時にdebug.txtというファイルが作成されそこにコンソール出力されます。
ウィンドウアプリの標準出力先は NULL、つまり出力したメッセージは捨てられるという話を聞いたことがあります。
コンソール出力先をファイルにしたいのなら、ファイルを開いて SetStdHandle 関数を使えば出来ると思います。
ウィンドウアプリでコンソールウィンドウを表示させたいのなら、AllocConsole 関数が使えると思います。
> ウィンドウアプリの標準出力先は NULL、
# MS-DOS 時代から "NUL" という名前で予約されてますね。
#
# 用例: c:\> foo.exe > NUL
#
# AUX(外部出力)とか CON(コンソール)とかと一緒で、
# これらの名前のファイルは今でも作成できない。
# (プログラム等で無理に作ると今度は消せなくなる...)
時々 '\0' のことを NULL と書く人がいますが、
やめてもらいたいと思っています。
char * p = NULL;
と、
*p = NULL;
とは意味が違います。
通常、p = NULL; のコーディングミスで出てくる表記なのですが、
ミスパターンらしき表記が、実は
*p = '\0';
で正しいという、「だまし」なコードだったりします。
他人のコードをデバッグすると結構あるんですよ。
ツイート | ![]() |