web-dev-qa-db-ja.com

「stray ’\ 342」および「stray’ \ 200」に言及するコンパイルエラーを修正する方法

私はこのプログラムを書きました:

#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}

first.cとして保存し、コンパイルしようとしましたが、この問題を受けて、gccコンパイラもインストールしました。

$ gcc first.c -o first1
first.c: In function ‘main’:
first.c:4:1: error: stray ‘\342’ in program
first.c:4:1: error: stray ‘\200’ in program
first.c:4:1: error: stray ‘\234’ in program
first.c:4:11: error: ‘Hello’ undeclared (first use in this function)
first.c:4:11: note: each undeclared identifier is reported only once for each function 
it appears in
first.c:4:17: error: expected ‘)’ before ‘World’
first.c:4:17: error: stray ‘\’ in program
first.c:4:17: error: stray ‘\342’ in program
first.c:4:17: error: stray ‘\200’ in program
first.c:4:17: error: stray ‘\235’ in program

この問題を修正するにはどうすればよいですか?

9
Zahid

問題は、ASCII引用符の代わりにUnicode引用符があることです。おそらくあなたの編集者がそれらを自動的に変更したか、オーサリングソフトウェアでこれを自動的に行うサイトからテキストをコピーしたでしょう。引用符を通常のASCII引用符(0x22、 ")に置き換えれば、動作するはずです。

固定ソース:

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}
12

間違った種類の引用符で文字列を囲んでいます。

あなたが持っている:

“Hello World\n”

代わりに次のものが必要です。

"Hello World\n"

使用した引用符は似ていますが、Cコンパイラーは文字列を囲むものとして認識しません。したがって、認識されないUnicode文字に関するエラーメッセージが表示され、文字列の内容が引用符で囲まれていないプログラムコードとして解釈されていることを示すエラーメッセージが表示されます。

使用した引用符には、引用の開始と終了に別々の文字が使用されていることに注意してください(引用が頻繁にタイプセットされるように曲がっています)。 Jobinを推奨 -などの多くのワードプロセッサは、単純な"引用符をそのような派手な引用符に自動的に変換します。ワードプロセッサを使用してCプログラムを作成している場合は、代わりにテキストエディタを使用する必要があります。

Ubuntuには、デフォルトでgeditがインストールされています(他にも多くのテキストエディターから選択できます)。多くのテキストエディターと同様に、geditは、Cを含む多くのプログラミング言語の構文の強調表示を提供します(したがって、プログラム内の異なるテキストは意味を示すために異なる色で表示されます)。これは便利な機能で、テキストエディターWordプロセッサよりもはるかに便利で使いやすい

これは、貼り付けられた引用符を自動的に非派手なバージョンに減らす別のプラットフォームのテキストエディターに慣れている場合、Ubuntu固有のものです。ただし、この質問は終了して Stack Overflowに移行する可能性があります

2
Eliah Kagan

sedコマンドを使用して、これらの問題を修正できます。

これにより、置き換えられるものの簡単なプレビューが表示されます。

sed -re 's/”|“/"/g' File.txt

これにより、置換が行われ、WithoutSmartQuotes.txtという新しいファイルに置換が配置されます。

sed -re 's/”|“/"/g' File.txt > WithoutSmartQuotes.txt

これにより、元のファイルが上書きされます。

sed -i .bk -re 's/”|“/"/g' File.txt
1
cokedude