• 締切済み

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.

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

すくなくとも、ここにコピー&ペーストされたソースでは、 " ( アスキーコード 0x22 ) のダブルクォートではなく、 http://unicode.org/cldr/utility/character.jsp?a=201Chttp://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)
回答No.4

>#include<stdio.h> > >int main(void){ >printf(“HelloWorld¥n”); >return 0; >} 先のお二人と同意見ですけど…。 ”では通用せず、" なら通るのでは?   

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

入力の際に注意を。 似たように見えて、違う文字があります。 プログラム中に使われている “ と、Cで文字列を表現する " とは違います。 " は Shiftと2 キーです(日本語キーボードの場合) また、Macの場合、 ¥ (円マーク) と \ (バックスラッシュ) は別の文字として扱うケースが多いです。 改行文字等は、バックスラッシュを使います。 バックスラッシュは、 optionキーを押しながら円マークのキーを押します。(日本語キーボードの場合)

noname#207626
質問者

お礼

\n抜いても同じ現象です。しっかりと半角にしています

回答No.2

#include<stdio.h> int main(void){ printf(“HelloWorld¥n”); return 0; } 文法に問題はないので,おそらくエラーの出ている行に全角の空白があるか,HelloWorldのプロンプトへ出力表示するためのprintfの「"」が全角「”」になっているのではないでしょうか? おそらく後者だと思います.

回答No.1

どこかに全角文字がはいってるのではないでしょうか? 半角文字だけでなければいけないですよ わかりにくいとおもうので、スペースとかの場合はですけど