printf デバッグ

どぶろく
記事: 75
登録日時: 13年前

printf デバッグ

投稿記事 by どぶろく » 11年前

printf デバッグのトピックがあったので、デバッガの無い BCC Developer で使おうと思い、

AllocConsole();
freopen("CONOUT$", "w", stdout);

を記述して printf を実行したのですが、文字が表示されませんでした。
これは、BCC のバグなのか?、いろいろ悩みながらイジッテいたら、
改行の \n を文字列に入れると表示されることが分かりました。
理由は分かりませんが、これで一つ賢くなりました(喜)。

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: printf デバッグ

投稿記事 by みけCAT » 11年前

バッファリングの関係かもしれませんね。
文字を出力する処理の後にfflush(stdout);という処理を入れてみてください。

naohiro19
記事: 256
登録日時: 14年前

Re: printf デバッグ

投稿記事 by naohiro19 » 11年前

freopen ( "CONOUT$", "w", stdout );
freopen ( "CONIN$", "r", stdin );
で動作するのでプログラム終了時にFreeConsoleを呼び出して解放させればOKです。

どぶろく
記事: 75
登録日時: 13年前

Re: printf デバッグ

投稿記事 by どぶろく » 11年前

>みけCATさん
ずばり正解でした。改行コード無しでも表示できました。

>naohiro19さん
了解しました。以下のプログラムで正解だと思います。
これでまた一つ賢くなれました。ありがとうございました(感謝)。

CODE:

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) 
{
    ChangeWindowMode( TRUE );
    if( DxLib_Init() == -1 ) {
        return -1;
    }
    //デバッグ用にコンソールを呼び出す
    AllocConsole();
    freopen("CONOUT$", "w", stdout); 
    freopen("CONIN$", "r", stdin);

    printf("こんにちは、デバックです!");
    fflush(stdout);

    WaitKey();        //キー入力待ち
        
    FreeConsole();    //コンソール解放
        
    DxLib_End();

    return 0;
}