- 締切済み
Macでテキストエディットを用いたC言語
Macでテキストエディットを用いてC言語プログラミングをしました。hello.cを作りました。 #include<stdio.h> int main(void){ printf(“HelloWorld¥n”); return 0; } この上がソースコードです。そしてターミナルでコンパイルして実行したら以下のようなメッセージが出ました。どこが間違っているのでしょうか? gcc -o main hello.c hello.c:4:10: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ hello.c:4:23: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ hello.c:4:13: error: use of undeclared identifier 'HelloWorld' printf(“HelloWorld¥n”); ^ hello.c:4:26: error: non-ASCII characters are not allowed outside of literals and identifiers printf(“HelloWorld¥n”); ^ 4 errors generated.
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
すくなくとも、ここにコピー&ペーストされたソースでは、 " ( アスキーコード 0x22 ) のダブルクォートではなく、 http://unicode.org/cldr/utility/character.jsp?a=201C と http://unicode.org/cldr/utility/character.jsp?a=201D になっています。 これらは、フォント等の環境によっては、全て「半角の二重引用符」に見えます。 私はMacユーザーで、実際にターミナルで cat hello.c とやると、半角に見えます。 ですが、C言語で、文字列用として有効なのは、 " ( アスキーコード 0x22 ) だけです。 *** 半角(に見える)かどうかは、関係ありません *** od -c hello.c と入力して、ダンプを取ってみてください。 odはバイナリーダンプを表示するコマンドですが、 -c オプションを付けると、文字コードとして認識できるものは、その文字で表示されます。 途中で改行等が挟まれるでしょうが、中身だけに注目します。 正しいプログラムなら p r i n t f ( " H e l l o W o r l d \ n " ) ; と、出力されるはずです。 しかし、今はこのように表示されるでしょう。 p r i n t f ( “ ** ** H e l l o W o r l d ¥ ** n ” ** ** ) ; “ ** ** というのは「 3バイト使って、 “ という文字になる」という意味です。
- 178-tall
- ベストアンサー率43% (762/1732)
>#include<stdio.h> > >int main(void){ >printf(“HelloWorld¥n”); >return 0; >} 先のお二人と同意見ですけど…。 ”では通用せず、" なら通るのでは?
- kmee
- ベストアンサー率55% (1857/3366)
入力の際に注意を。 似たように見えて、違う文字があります。 プログラム中に使われている “ と、Cで文字列を表現する " とは違います。 " は Shiftと2 キーです(日本語キーボードの場合) また、Macの場合、 ¥ (円マーク) と \ (バックスラッシュ) は別の文字として扱うケースが多いです。 改行文字等は、バックスラッシュを使います。 バックスラッシュは、 optionキーを押しながら円マークのキーを押します。(日本語キーボードの場合)
- nick_name2
- ベストアンサー率22% (2/9)
#include<stdio.h> int main(void){ printf(“HelloWorld¥n”); return 0; } 文法に問題はないので,おそらくエラーの出ている行に全角の空白があるか,HelloWorldのプロンプトへ出力表示するためのprintfの「"」が全角「”」になっているのではないでしょうか? おそらく後者だと思います.
- blanchul96
- ベストアンサー率6% (2/32)
どこかに全角文字がはいってるのではないでしょうか? 半角文字だけでなければいけないですよ わかりにくいとおもうので、スペースとかの場合はですけど
お礼
\n抜いても同じ現象です。しっかりと半角にしています