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

C言語のコーディングについて,教えてください。
コマンドプロンプトから実行するプログラムを作っています。
このプログラムからメッセージをprintf()関数で出します。
コマンドプロンプトが和文表示可能ならば和文のメッセージを,
表示不可能ならば英文のメッセージを出したいのです。
しかし,コマンドプロンプトのロケールを取得し和文出力可能か判断する
方法がわかりません。この点について,教えてください。
chcp 932ではなく,chcp 437で和文メッセージを出すと文字化けしてしまいます。
chcp 437なら,英文メッセージを出したいです。

A 回答 (3件)

非常に安直な方法ですが、


system("chcp > cp.log");
を実行して、cp.log の中身を確認するとか。
    • good
    • 1
この回答へのお礼

回答していただき,ありがとうございます。
なるほど。
検討のひとつにします。

お礼日時:2021/12/03 08:09

こちらが参考になりませんでしょうか。


GetConsoleOutputCPでページ番号が取得できます。
https://docs.microsoft.com/ja-jp/windows/console …
    • good
    • 1
この回答へのお礼

回答していただき,ありがとうございます。
関数で取得できるのは,良いですね。
検討してみます。

お礼日時:2021/12/03 08:11

No2です。


参考までにGetConsoleOutputCPの使用例です。
以下のソースをコンパイルして実行した結果です。(locale.exeを作成しました)
gccでコンパイルしたので、GetConsoleOutputCPのプロトタイプ宣言を自前でしています。
Visual Studioなら自前でプロトタイプ宣言する必要はないかもしれません。
(Visual Studioをインストールしていないので不明です)

include<stdio.h>

unsigned int GetConsoleOutputCP();
int main(int argc, char* argv[])
{
unsigned int page;
page = GetConsoleOutputCP();
printf("page=%u\n",page);
return(0);

}

添付画像実行結果です。
「C言語 和文と英文のメッセージの出し方に」の回答画像3
    • good
    • 1
この回答へのお礼

コーディング例まで提示していただき,ありがとうございます。
当方でも試しましたが,問題なく取得できました。

お礼日時:2021/12/03 10:33

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