質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

9984閲覧

C言語で「unknown escape sequence: '\x8f'」、というエラーが出ました…どうしてでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/11/19 07:35

###発生している問題・エラーメッセージ

警告 unknown escape sequence: '\x8f'

###該当のソースコード

C

1 2~前略~ 3 4 switch(ex){ 5 case 0: 6 printf("まだまだ勉強が足りませんね。しっかり予習復習をしましょう。"); //この行です。 7 break; 8 9~後略~

###試したこと
「\x8f」というのが文字コードである、ということは分かりました。

###補足情報(言語/FW/ツール等のバージョンなど)
C言語、ツール:EasyIDEC Ver. 0.0.6.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

EasyIDECが内部でコンパイラを使用しているTCCが文字コードのShift_JIS(もしくはWindows-31J)に対応していないにも関わらず、EasyIDECがそのままShift_JISのソースコードを渡しているためと考えられます。EasyIDECの最新が0.0.9.0となっていますので、もしかしたら、修正されているかも知れません。

学習用C言語開発環境 Ver 0.0.9.0 ※ ページ上部の広告部分にDownloadという偽リンクが現る場合がありますので、注意してください。本当のダウンロードはちょっとスクロールしたところです。

他に昔からある対応方法として回避用の""をつけるというのがありますが、絶対にやめて下さい。現代的なCのコンパイラは文字コードを指定し、正しく解釈できるようになっており、正しく文字コードを指定していれば発生しない問題です。変な癖を付けてしまい、正しいコーディングができなくなることの方が問題になります。

取れる手段は二つです。

  • EasyIDECを使い続けるのであれば、日本語の文字は一切書かない(半角の英数字記号のみ、いわゆるASCIIのみにする)。どんな影響があるかわからないため、コメント部分にも書いては駄目。
  • 他の現代的で最新の開発環境やコンパイラを使う。Visual StudioやPleiadesなど。

投稿2016/11/19 08:16

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Shift-JISコードに対応していないコンパイラに、Shift-JISのソースコードを渡していませんか?

予(0x97, 0x5C) 習(0x8F, 0x4B)

なので、Shift-JISに 対応していないツールが、"予"の2Byteの0x5Cを ''(0x5C)と誤認し、その後の"習"の1Byte目の0x8Fで不正なエスケープシーケンス警告になっているのでしょうね。

Shift_JIS の 「2バイト目が5C等になりうることによる問題」を参考にしてみてください。

投稿2016/11/19 07:54

編集2016/11/19 08:16
KenjiToriumi

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

文字コードをShift-JIS でコーディングをしていて、
http://www5f.biglobe.ne.jp/~fuku-labo/library/program/common/1/004.htm
https://sites.google.com/site/fudist/Home/grep/sjis-damemoji-jp

のように「予」の文字がエスケープ''として判定されているのかなと思いますが、文字コードどうですか?
utf−8等に変換してみたらどうなりますか?

###追記
ここを参考
http://ppp-lab.sakura.ne.jp/ProgrammingPlacePlus/c/046.html#0x5c_problem

2byte目に''を含んでいるのでそれをエスケープするため、「予\」としてエスケープする方法もあるでしょうが、文字コードをutf−8でコーディングした方がてっとり早いと思います。

予習は文字コードで「97 5C 8F 4B」
5cが''とみなされ
\x8Fと判断されているのかと思います。

投稿2016/11/19 07:48

編集2016/11/19 08:39
hiim

総合スコア1689

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問