こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語、エラーメッセージが紐解けません。

いつも大変お世話になり誠にありがとうございます。
標記の件。
エラーメッセージが紐解けません。
どうかどなたかアドバイスください。
下記にコードとコンパイルエラーを書きます。
       記
コード
#include <stdio.h>

typedef struct Car{
int num;
double gas;
}Car;

int main(void)
{
printf("int型のサイズは%dバイトです。\n", sizeof(int));
printf("double型のサイズは%dバイトです。\n", sizeof(double));
printf("構造体struct Car型のサイズは%dバイトです。\n",sizeof(Car));
printf("構造体struct Car型へのポインタのサイズは%dバイトです。\n",sizeof(Car *));

return 0;
}


コンパイラーエラー
C:\MinGW>gcc text20.c -o text20
text20.c: In function 'main':
text20.c:12:11: warning: unknown escape sequence: '\221'
printf("構造体struct Car型のサイズは%dバイトです。\n",sizeof(Car));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
text20.c:13:11: warning: unknown escape sequence: '\221'
printf("構造体struct Car型へのポインタのサイズは%dバイトです。\n",sizeof(Car *));

以上です。
ご多忙中恐れ入ります。
ご回答の程宜しくお願い申し上げます。

投稿日時 - 2018-04-30 21:13:32

QNo.9493827

困ってます

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

mingwは、文字コードがutf-8前提なので、シフトJISの文字を使うときは、コンパイルオプションの指定が必要です。

gcc -finput-charset=CP932 -fexec-charset=CP932 text20.c -o text20

投稿日時 - 2018-04-30 21:51:45

お礼

ご回答誠にありがとうございました。
流石によくご存じですね。
凄いですね。
大変勉強になりました。
今後とも宜しくお願い致します。

投稿日時 - 2018-04-30 22:27:34

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

どうしてそんなメッセージが出るかと言えば,ShiftJISコードがそれぞれ16進で
構(8d-5c)造(91-a2)
となっています。そして構の2バイト目の5cはバックスラッシュ「\」の文字コードと同じですから8d-5c-91-a2の5c-91のところがescape sequenceだと解釈されるのです。escape sequenceは文字列の中で特殊な文字を入力したいときに使うもので,たとえば「\n」でも使っていますよね。
16進の91は8進だと221です。 だから'\221'となって,知らないescape sequenceだと言うのです。

投稿日時 - 2018-04-30 22:19:25

お礼

ご回答誠にありがとうございました。
お書きになっていることが、マダよく解りません。
僕が1番理解できてないのが、2進数、8進数、16進数
です。
そのうち質問するかも知れないので、
どうぞ、宜しくお願い申し上げます。

投稿日時 - 2018-04-30 22:54:18

あなたにオススメの質問