質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

【Mac】【VSCode】デバッグコンソール上でマルチバイトな文字列を正しく出力させたい【C/C++】【環境構築】

Tsutsujun_1231
Tsutsujun_1231

総合スコア19

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0評価

0クリップ

274閲覧

投稿2022/06/11 08:50

編集2022/06/12 02:47

前提

MacPCでC/C++の勉強をしたくなったので、VSCodeで学習できるように、必要な拡張機能を加えつつ環境構築をしています。「これも使ってみよう。これは今段階ではいいかな...」と色々試行錯誤していたんですが、もう少しで構築完了というところでつまづいてしまいました...

実現したいこと

printfで、「こんにちは」といった日本語(マルチバイト文字)を含む文字列を、コンパイル&実行で出力される[ターミナル]パネル上ではなく、ビルド&デバッグで出力される[デバッグコンソール]パネル上で正しく表示させたいです。

該当のソースコード

C

// ファイル名:test.c #include <stdio.h> int main(){ printf("こんにちは\n"); return 0; }

発生している問題・エラーメッセージ

上記のソースコードを拡張機能[C/C++]の機能で、「ファイルの実行」もしくは「ファイルのデバッグ」すると、[デバッグコンソール]パネルに以下のように出力されます。

Warning: Debuggee TargetArchitecture not detected, assuming x86_64. =thread-selected,id="1" =library-unloaded,id="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test",target-name="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test",host-name="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test" Loaded '/usr/lib/dyld'. Symbols loaded. Loaded '/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test'. Symbols loaded. Loaded '/usr/lib/libSystem.B.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcache.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcommonCrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcompiler_rt.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcopyfile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcorecrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdispatch.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdyld.dylib'. Symbols loaded. Loaded '/usr/lib/system/libkeymgr.dylib'. Symbols loaded. Loaded '/usr/lib/system/liblaunch.dylib'. Symbols loaded. Loaded '/usr/lib/system/libmacho.dylib'. Symbols loaded. Loaded '/usr/lib/system/libquarantine.dylib'. Symbols loaded. Loaded '/usr/lib/system/libremovefile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_asl.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_blocks.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_c.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_configuration.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_coreservices.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_darwin.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_dnssd.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_featureflags.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_info.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_m.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_malloc.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_networkextension.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_notify.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_sandbox.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_secinit.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_kernel.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_platform.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_pthread.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_symptoms.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_trace.dylib'. Symbols loaded. Loaded '/usr/lib/system/libunwind.dylib'. Symbols loaded. Loaded '/usr/lib/system/libxpc.dylib'. Symbols loaded. Loaded '/usr/lib/libobjc.A.dylib'. Symbols loaded. Loaded '/usr/lib/libc++abi.dylib'. Symbols loaded. Loaded '/usr/lib/libc++.1.dylib'. Symbols loaded. xe3x81x93xe3x82x93xe3x81xabxe3x81xa1xe3x81xaf The program '/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test' has exited with code 0 (0x00000000).

問題なのは

xe3x81x93xe3x82x93xe3x81xabxe3x81xa1xe3x81xaf

の部分で、このように文字化け...と言いますか、16進数の羅列みたいな感じで表示されてしまいます。この時[ターミナル]パネルの方は、以下のようになっています。

> Executing task: C/C++: gcc-11 アクティブなファイルのビルド < ビルドを開始しています... /usr/local/bin/gcc-11 -fdiagnostics-color=always -g /Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test.c -o /Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test ビルドが正常に完了しました。 Terminal will be reused by tasks, press any key to close it.

関連する構成・設定ファイル

json

// ファイル名:c_cpp_properties.json { "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "macFrameworkPath": [], "compilerPath": "/usr/local/bin/gcc", "cStandard": "c17", "cppStandard": "c++17", // "cppStandard": "c++14", // 競プロ用 "intelliSenseMode": "macos-gcc-x64" } ], "version": 4 }

json

// ファイル名:tasks.json { "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc-11 アクティブなファイルのビルド", "command": "/usr/local/bin/gcc-11", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "デバッガーによって生成されたタスク。" } ], "version": "2.0.0" }

json

// ファイル名:launch.json { // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "cwd": "${workspaceFolder}", "console": "integratedTerminal" } ] }

試したこと

拡張機能[Code Runner]を入れているので、これを使ってソースコードを「Run Code」、もしくはショートカット「[^control]+[⌥option]+[N]」キーを押すと、[ターミナル]パネル上では正しく出力されるようです。

VSCode % cd "/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/" && gcc test.c -o test && "/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/"test こんにちは

エンコードが一致していないかもと思ったので(VSCodeのステータスバーには「UTF-8」と表示されています)、

json

// ファイル名:launch.json "env": { "encoding": "utf-8" }

もしくは

json

// ファイル名:launch.json "env": { "encoding": "shift_jis" }

を末尾に付記したのですが、結果は変わらず...また、コンソールメッセージ最上部の

Warning: Debuggee TargetArchitecture not detected, assuming x86_64.

も気になったので、

json

// ファイル名:launch.json "targetArchitecture": "x86_64",

などと付け足してみたんですが、結局プロパティ名"targetArchitecture"の下に黄色の波線が表れて、[問題]パネルで

Property targetArchitecture is not allowed.

と怒られてしまいました。

補足情報(FW/ツールのバージョンなど)

※この質問記述時点のバージョンです。コンパイラに関しては、競技プログラミングに興味があることもあり、clangではなくgccをインストールしております。

  • macOS:Catalina 10.15.7
  • VSCode:1.68.0
  • コンパイラ:gcc/g++ 11.3.0 (Homebrew GCC 11.3.0)

実装中の拡張機能

※VSCodeは他の言語でも使用しているため、一部のみを抜粋します。

  • C/C++ Extension Pack:v1.2.0
  • C/C++ Clang Command Adapter:v0.2.4
  • CodeLLDB:v1.7.0
  • Code Runner:v0.11.7
  • Japanese Language Pack for Visual Studio Code:v1.68.6092124
  • new-zenkaku:v0.0.4

json

// ファイル名:settings.json(一部のみを抜粋コピペ) { "clang.executable": "clang++", "clang.cxxflags": ["-std=c++17"], // "clang.cxxflags": ["-std=c++14"], // 競プロ用 "code-runner.runInTerminal": true, "code-runner.executorMap": { "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", // "cpp": "cd $dir && g++ -O2 -std=c++14 $fileName && ./a.out", // 競プロ用 }, // "cmake.configureOnOpen": true, "[cpp]": { "editor.defaultFormatter": "ms-vscode.cpptools" }, }

追記

以下のように、英字の場合は正しく出力されます。

C

// ファイル名:test.c #include <stdio.h> int main(){ printf("Hello\n"); printf("こんにちは\n"); return 0; }

英語と日本語でそれぞれ挨拶プログラム


以上です。よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。