- ベストアンサー
C言語のコンパイルエラーなんですが、どこが悪いのかがわからない。
作成したソースプログラムを、コンパイルしようとすると次のようなエラーが出ます。 「ファイル名:19:waring: unknow escape sequence: `\' followed by char code 0×89」 確かに、19行めに¥nの改行コードを打ちましたがそれがいけないのかな?しかし、その理由もわからん。 というか、上の考えがあっているのかすら分からない。どうか教えてください。ちなみに、19行目のソースプログラムは 「printf("よし!十円チョコかえるわ。今すぐレッツゴー。\n");」 です。よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
これはUNIXではありがちなエラーで、原因は文字コード(シフトJIS)にあります。 ここで問題になっているのは「十円」という部分で、これを16進で出力すると「8F 5C 89 7E」となります。 5C は \ の文字コードであるため、これをエスケープ文字として認識し、次に続く 89 を見て「そんなエスケープシーケンスはない」というエラーを出しているのです。 解決方法ですが、5C をエスケープコードではなく \ 自身であるように認識させればよいので、5C の後ろにもう1つ 5C を置いてやればOKです。 つまり、「十円」を「十\円」とします。 ※日本語環境用に作られたコンパイラは、その辺をきちんと処理してくれるのでこのような問題は起きないのですが、そうでないコンパイラでは注意が必要になります。
その他の回答 (6)
コンパイラが日本語に対応してない場合によく起きます。 '十' という文字は、SJIS のコードで 0x8F5C なのですが、この2バイト目の 0x5C が '\' と同じコードなので、続く '円' の 0x897E の 0x89 とセットで未定義のエスケープシーケンスだと怒られているわけです。 もしコンパイラに日本語を扱うスイッチがあれば、それを指定するようにして、それが無い場合は、"十\円" などのように対処するしかありません。
お礼
ありがとうございました。助かります。これからは気をつけます。
- asuca
- ベストアンサー率47% (11786/24626)
>どこで見ればいいのでしょうか?漢字コードは・・・? エディタは何を使っているのでしょうか?
補足
Windowsなので、メモ帳です。初心者ですみません・・。
- fuji1
- ベストアンサー率29% (109/371)
もう一度きました。 nが半角なら大丈夫ですねぇ。。 ところで、何の本についていたんですか? それで解決するかも知れません。 全角スペースですが、8140 でした。(すいません)
補足
C言語超入門というほんです。そこについていた、CD-ROMです。 漢字は関係ないのですか??
- fuji1
- ベストアンサー率29% (109/371)
こんばんわ。。 #2 の方が言うようにnが全角文字かと思われます。 VC++6 で試したところ、全角文字にすると、 「D:\tmp\CHECKS\CHECKS.cpp(13) : warning C4129: '・ : エスケープ シーケンスとして正しく認識されませんでした。」 というワーニングがでます。 半角nにするとワーニングはでませんでしたよ。 0x89 は全角コードの開始コードですからね。 (全角スペースは0x8940です)
補足
ですから、半角ですよ。nは・・・・・。 一番の方のように、漢字ではないかと思うのですが、どこで漢字コードが見れ変更できるのかが分からないのです。
- K-1
- ベストアンサー率21% (832/3844)
「code 0x89」というのは割り当てられていません。 もしかして\とかnとかが全角文字とかいうことはないですか?
補足
いえ、ちゃんと書いたとおりですし半角です。 使っているソフトは、Microsoftのではなく、本についているものでやっています。
- asuca
- ベストアンサー率47% (11786/24626)
使っているエディタの漢字コードは何になっていますか? JISなどに変更してみてください。
補足
すみませんが、どこで見ればいいのでしょうか?漢字コードは・・・?
お礼
そのとうりです。このソフトは、UNIXを元でWindows上で動かすものなのです。大変助かります。ありがとうございました。