表示と表示するプログラム(C言語)

損害を補償しないことについて

このサイトを閲覧して生ずるいかなる損害も補償いたしません。

表示と表示するプログラム

表示と表示するプログラムを作成しました。文字コードの問題も考えてみました。表という字のシフトJISの文字コードの2バイト目が円マークに当たるので、うまく表示できない問題を扱っています。

表の次に円マークを入れる方法

表示と表示するプログラムの例を示します。表の次に円マークを入れる方法を試しました。

表示と表示するプログラム実行の画面

コマンドプロンプトで実行するプログラムです。typeコマンドでファイル内容を表示しました。gccでコンパイルし、hyouji.exeを作成し、実行しました。

実行したPCのOSはWindows8.1日本語版です。コマンドプロンプトはデフォルトで日本語はシフトJISコードを使っています。ソースファイル編集時も、日本語はシフトJISコードを使って作成、保存しました。

Windows8.1日本語版のコマンドプロンプトでgccを使い、コンパイルオプションで特に文字コードに関する指定を行わない場合、エスケープ文字は半角円マークになります。

円マーク+n(英小文字)が改行文字に置き換えられます。円マークが2つ続くと、1つの円マークになります。

この環境では、半角の円マークの文字コードは、[5c]です。
ここで [ ] の中に16進2桁で文字コードの値を書きました。
以下の説明でも同様にします。

n(半角英小文字)の文字コードは、[6e]です。[5c][6e]があると、改行コードに置き換えられます。[5c][5c]があると、[5c]に置き換えられます。

[5c]に続き、エスケープシーケンスに該当しない文字があった場合は不定です。

「表示」のシフトJISコードは[95][5c][8e][a6]で、「表」の第2バイトが[5c]になっています。コンパイラは、[5c][8e]がエスケープシーケンスに該当しないので、警告を出しました。

そして、[5c]が取り除かれて、[95][8e][a6]になりました。
[95][8e]は、「侮」の文字コードです。
[a6]は、「ヲ」の半角の文字コードです。
説明文中に半角カタカナを入れるとうまく表示されない場合があるので上記の説明になりました。

「表」の次に半角の円マークを入れると、ソースファイル上、
[95][5c][5c][8e][a6]になります。
コンパイル時、[5c][5c]があると[5c]になるので、「表示」が表示できました。

シフトJISで2バイト目が円マークになる漢字

漢字をシフトJISで扱っている場合、2バイト目が[5c]になる漢字があります。[5c]は、日本語環境では、円マークを表わします。[5c]は、英語環境では、バックスラッシュを表わします。

2バイト目が[5c]になる主な漢字をあげます。
[81][5c]=―(ダッシュ)
[83][5c]=ソ(「そ」のカタカナ)
[87][5c]=Ⅸ(ローマ数字の9の大文字)
[89][5c]=噂(うわさ)
[8b][5c]=欺(あざむく)
[8c][5c]=圭(けい)
[8d][5c]=構(かまえる)
[8e][5c]=蚕(かいこ)
[8f][5c]=十(漢数字の10)
[90][5c]=申(もうす)
[91][5c]=曾(「そ」だが「曽」ではない)
[92][5c]=箪(「たんす」を漢字にした場合の1文字目)
[93][5c]=貼(はる)
[94][5c]=能(のう)
[95][5c]=表(おもて)
[96][5c]=暴(あばれる)
[97][5c]=予(よ)
[98][5c]=禄(ろく)
[99][5c]=兔(「うさぎ」だが「兎」ではない)
[e9][5c]=饅(「まんじゅう」を漢字にした場合の1文字目)

コンパイルオプションを使用する方法

コンパイルオプションを使用する例を示します。

hyouji1実行結果

typeコマンドでファイル内容を表示しました。日本語はシフトJISコードを使いました。1つ目のコンパイルでは、2つのコンパイルオプションを使いました。
-finput-charset=CP932は、入力ファイルがシフトJISコードであることの指定です。
-fexec-charset=CP932は、実行環境がシフトJISコードであることの指定です。
実行ファイルa.exeができたので、それを実行したところ、表示が表示できました。
2つ目のコンパイルもほとんど同じです。1つ目のコンパイルでは、コンパイルオプションが、-(マイナス)とfで始まっていたところ、2つ目のコンパイルではマイナスが2つで始まっています。意味は同じです。

文字コードを埋め込む方法

文字コードを埋め込む方法の例を示します。

hyouji2実行結果

typeコマンドでファイル内容を表示しました。日本語はシフトJISコードを使ったのですが、表の字のシフトJISコードは[95][5c]なので、それを直接埋め込んでいます。このファイルは出力環境がシフトJISコードである場合専用プログラムになります。

下の「コピー」ボタンを押すと、このページのタイトルとURLがクリップボードにコピーされます。

タイトルとURLをコピーしました