• ベストアンサー

C言語のコンパイルエラーなんですが、どこが悪いのかがわからない。

 作成したソースプログラムを、コンパイルしようとすると次のようなエラーが出ます。 「ファイル名:19:waring: unknow escape sequence: `\' followed by char code 0×89」  確かに、19行めに¥nの改行コードを打ちましたがそれがいけないのかな?しかし、その理由もわからん。  というか、上の考えがあっているのかすら分からない。どうか教えてください。ちなみに、19行目のソースプログラムは 「printf("よし!十円チョコかえるわ。今すぐレッツゴー。\n");」 です。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.6

これはUNIXではありがちなエラーで、原因は文字コード(シフトJIS)にあります。 ここで問題になっているのは「十円」という部分で、これを16進で出力すると「8F 5C 89 7E」となります。 5C は \ の文字コードであるため、これをエスケープ文字として認識し、次に続く 89 を見て「そんなエスケープシーケンスはない」というエラーを出しているのです。 解決方法ですが、5C をエスケープコードではなく \ 自身であるように認識させればよいので、5C の後ろにもう1つ 5C を置いてやればOKです。 つまり、「十円」を「十\円」とします。 ※日本語環境用に作られたコンパイラは、その辺をきちんと処理してくれるのでこのような問題は起きないのですが、そうでないコンパイラでは注意が必要になります。

mattsu555
質問者

お礼

そのとうりです。このソフトは、UNIXを元でWindows上で動かすものなのです。大変助かります。ありがとうございました。

その他の回答 (6)

noname#30727
noname#30727
回答No.7

コンパイラが日本語に対応してない場合によく起きます。 '十' という文字は、SJIS のコードで 0x8F5C なのですが、この2バイト目の 0x5C が '\' と同じコードなので、続く '円' の 0x897E の 0x89 とセットで未定義のエスケープシーケンスだと怒られているわけです。 もしコンパイラに日本語を扱うスイッチがあれば、それを指定するようにして、それが無い場合は、"十\円" などのように対処するしかありません。

mattsu555
質問者

お礼

ありがとうございました。助かります。これからは気をつけます。

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.5

>どこで見ればいいのでしょうか?漢字コードは・・・? エディタは何を使っているのでしょうか?

mattsu555
質問者

補足

Windowsなので、メモ帳です。初心者ですみません・・。

  • fuji1
  • ベストアンサー率29% (109/371)
回答No.4

もう一度きました。 nが半角なら大丈夫ですねぇ。。 ところで、何の本についていたんですか? それで解決するかも知れません。 全角スペースですが、8140 でした。(すいません)

mattsu555
質問者

補足

C言語超入門というほんです。そこについていた、CD-ROMです。 漢字は関係ないのですか??

  • fuji1
  • ベストアンサー率29% (109/371)
回答No.3

こんばんわ。。 #2 の方が言うようにnが全角文字かと思われます。 VC++6 で試したところ、全角文字にすると、 「D:\tmp\CHECKS\CHECKS.cpp(13) : warning C4129: '・ : エスケープ シーケンスとして正しく認識されませんでした。」 というワーニングがでます。 半角nにするとワーニングはでませんでしたよ。 0x89 は全角コードの開始コードですからね。 (全角スペースは0x8940です)

mattsu555
質問者

補足

ですから、半角ですよ。nは・・・・・。 一番の方のように、漢字ではないかと思うのですが、どこで漢字コードが見れ変更できるのかが分からないのです。

  • K-1
  • ベストアンサー率21% (832/3844)
回答No.2

「code 0x89」というのは割り当てられていません。 もしかして\とかnとかが全角文字とかいうことはないですか?

mattsu555
質問者

補足

いえ、ちゃんと書いたとおりですし半角です。 使っているソフトは、Microsoftのではなく、本についているものでやっています。

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

使っているエディタの漢字コードは何になっていますか? JISなどに変更してみてください。

mattsu555
質問者

補足

すみませんが、どこで見ればいいのでしょうか?漢字コードは・・・?