ここから本文です

緊急 学習用C言語開発環境(仮)で #include <stdio.h> int main(void) { ...

yuu_eva_0112さん

2010/5/1922:41:00

緊急
学習用C言語開発環境(仮)で
#include <stdio.h>

int main(void)
{
printf("円記号を表示します。:%c\n", '\\');
printf("アポストロフィを表示します。: %c\n", '\'');
return 0,
}
と入力したら

ファイル「」の
「5行目」で記述エラーを発見しました。
警告
unknown escape sequence: '\x8e'
ファイル「」の
「6行目」で記述エラーを発見しました。
警告
unknown escape sequence: '\x8e'
ファイル「」の
「8行目」で記述エラーを発見しました。
「identifier」を付け忘れています。

と出ました。
エスケープシーケンスはどうやったら、入力できますか。

閲覧数:
2,993
回答数:
3
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

2010/5/2010:53:40

'表'の文字コードはシフトJIS では0x955cで、'\'=0x5cを含んでしまうのでうまく処理出来ていない、ということでしょう。'示'のコードが0x8ea6なので、'\8e'ってなんじゃ?というエラーメッセージとも合致します。

質問通りに「エスケープシーケンスを入力する」のであれば
"円記号を表\示します。:%c\n"
等のように'表'のあとにもう一個\を入れます。そうすると、0x95 0x5c 0x5c 0x8e 0xa6...という文字列になって、エスケープ処理で0x5c 0x5c すなわち'\\'が'\'一個ということになり、0x95 0x5c 0x8e 0xa6...という期待通りのデータが得られます。

gccであればコンパイラのオプションに --input-charset=cp932 をつけてコンパイルするほうがスジかも知れませんが。

エラーの最後はreturn 0のあとがセミコロンじゃなくてカンマになっているからです。

質問した人からのコメント

2010/5/20 18:09:56

笑う うまく表示されました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

mikeneko_sumさん

2010/5/2004:58:14

ダブルクヲーテーション間で、\x1b のように記述してみてはいかがでしょうか?
printf("etc \x1b");

ただし、質問のソースでは、¥記号・アポストロフィの表示をしたいようですので、
%c=キャラクタコードを1文字表示を使い
printf("¥記号を表示します :%c \n",0x5c);
printf("アポストロフィを表示します。: %c\n",0x27);
では、ダメでしょうか?

2010/5/1923:13:22

エラーの原因は第一引数に含まれる日本語の部分で、\nとか\\とか\'といった部分ではないと思われます。

ソースファイルの文字コードをutf-8に変てやり直してみましょう。

http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.90.E3.82.A4.E3.83.88...

ああ、あとreturn 0の後は、","じゃなくて";"ね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。