No.14691![]() |
まったく不可解なコンパイルエラー 投稿者---new(2004/06/17 13:57:53) |
||
printf関数で"表"という漢字を出力させようとすると、 『warning: unknown escape sequence: `\' followed by char code 0x8e』 というエラーがでます。なぜでしょう?コンパイラーが悪いのでしょうか? ちなみに私が使用しているコンパイラーはcygwin version 2.78.2.3 です。 強引に実行すると次のようの文字がでます。 <結果> 侮ヲ #include <stdio.h> int main(void){ printf("表示\n"); return 0; } 皆様方、お忙しいとは思いますがなにとぞご教授ください。 宜しくお願いいたします。 |
No.14692![]() |
Re:まったく不可解なコンパイルエラー 投稿者---だん(2004/06/17 14:07:03) |
||
cygwinは使用したことがないのでわかりませんが、 wprintf関数を使用するべきではないでしょうか? |
No.14696![]() |
Re:まったく不可解なコンパイルエラー 投稿者---new(2004/06/17 14:53:06) |
||
>wprintf関数を使用するべきではないでしょうか? すいません、だん殿。私の勉強不足によりワイド文字の使用方法が わかりません。以下のように書いてみましたが、やっぱりコンパイルがとおりません。よろしければ、ご教授お願いします。 #include <stdio.h> #include <wchar.h> int main(void){ wchar_t str[128] = "表示"; wprintf(str); return 0; } |
No.14693![]() |
Re:まったく不可解なコンパイルエラー 投稿者---円零(2004/06/17 14:44:56) |
||
これは結構有名な問題かも。私もどっかで聞いたことがあるような気がします。 で、検索したら、こんなん出ました。 http://www.kent-web.com/pubc/jcode/ http://homepage2.nifty.com/k_maeda/code/perl.html とりあえず"表\示"ではどうですか。 |
No.14697![]() |
ありがとうございました 投稿者---new(2004/06/17 15:04:07) |
||
なるほど、PCやコンパイラの問題ではなく、コード表の問題だったわけですね。C5には注意が必要ですね。 本当に皆様の知識には脱帽します。謎が解けてすっきりいたしました。 ありがとうございます。 |
No.14694![]() |
Re:まったく不可解なコンパイルエラー 投稿者---ぽこ(2004/06/17 14:45:45) |
||
>printf関数で"表"という漢字を出力させようとすると、 >『warning: unknown escape sequence: `\' followed by char code 0x8e』 >強引に実行すると次のようの文字がでます。 ><結果> 侮ヲ Shift-jis環境にて、表(0x955C)示(0x8EA6) ASCIIでは0x5Cは'\'となるので "表示"={0x95, '\', 0x8e, 0xA6} "\0x8e"といったエスケープ系列はないので、コンパイラは警告を出し、 プログラム実行時には'\'を無視し、以下のように表示してるのでは? "侮ヲ(半角)"={0x95, 0x8e, 0xA6}; |
No.14695![]() |
Re:まったく不可解なコンパイルエラー 投稿者---tetrapod(2004/06/17 14:45:59) |
||
cygwin 版 gcc は、ソースコードにおいて日本語(マルチバイト文字)対応していません。 さらに、表の sjis 表現は、その2バイト目に 0x5C つまりバックスラッシュ文字を含みます。 そのため、文字列中のバックスラッシュ文字を見て \n や \t と同様の処理を行おうとし、 未知のエスケープシーケンスがある、という警告になってしまいます。 とりあえず "表\示" とすれば直るのですが... EUC コードでソース書くとか sjis の2バイト目の \ をフィルタするソフトを使うとか その辺の対処が必要でしょう。 |