アプリ版:「スタンプのみでお礼する」機能のリリースについて

 作成したソースプログラムを、コンパイルしようとすると次のようなエラーが出ます。
「ファイル名:19:waring: unknow escape sequence: `\' followed by char code 0×89」

 確かに、19行めに¥nの改行コードを打ちましたがそれがいけないのかな?しかし、その理由もわからん。
 というか、上の考えがあっているのかすら分からない。どうか教えてください。ちなみに、19行目のソースプログラムは

「printf("よし!十円チョコかえるわ。今すぐレッツゴー。\n");」

です。よろしくお願いします。

A 回答 (7件)

これはUNIXではありがちなエラーで、原因は文字コード(シフトJIS)にあります。



ここで問題になっているのは「十円」という部分で、これを16進で出力すると「8F 5C 89 7E」となります。
5C は \ の文字コードであるため、これをエスケープ文字として認識し、次に続く 89 を見て「そんなエスケープシーケンスはない」というエラーを出しているのです。

解決方法ですが、5C をエスケープコードではなく \ 自身であるように認識させればよいので、5C の後ろにもう1つ 5C を置いてやればOKです。
つまり、「十円」を「十\円」とします。

※日本語環境用に作られたコンパイラは、その辺をきちんと処理してくれるのでこのような問題は起きないのですが、そうでないコンパイラでは注意が必要になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/07/02 23:06

コンパイラが日本語に対応してない場合によく起きます。



'十' という文字は、SJIS のコードで 0x8F5C なのですが、この2バイト目の 0x5C が '\' と同じコードなので、続く '円' の 0x897E の 0x89 とセットで未定義のエスケープシーケンスだと怒られているわけです。

もしコンパイラに日本語を扱うスイッチがあれば、それを指定するようにして、それが無い場合は、"十\円" などのように対処するしかありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/07/02 23:04

>どこで見ればいいのでしょうか?漢字コードは・・・?



エディタは何を使っているのでしょうか?

この回答への補足

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

補足日時:2002/07/02 22:20
    • good
    • 0

もう一度きました。


nが半角なら大丈夫ですねぇ。。
ところで、何の本についていたんですか?
それで解決するかも知れません。

全角スペースですが、8140 でした。(すいません)

この回答への補足

C言語超入門というほんです。そこについていた、CD-ROMです。

漢字は関係ないのですか??

補足日時:2002/07/02 22:06
    • good
    • 0

こんばんわ。


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

この回答への補足

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

補足日時:2002/07/02 21:47
    • good
    • 0

「code 0x89」というのは割り当てられていません。


もしかして\とかnとかが全角文字とかいうことはないですか?

この回答への補足

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

補足日時:2002/07/02 21:34
    • good
    • 0

使っているエディタの漢字コードは何になっていますか?


JISなどに変更してみてください。

この回答への補足

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

補足日時:2002/07/02 21:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています