「stray '\ 342'」と「stray '\ 200'」を含むコンパイルエラーを修正する方法 [閉まっている]


9

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

#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

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


Libre officeやMicrosoft Wordなど、他のワードプロセッサやドキュメントからこのプログラムをコピーしましたか?
jobin 2013年

どこかからコードをコピーした場合は、コピーしたコードに不要なコードが埋め込まれている可能性があるため、自分でコードを書き直してください。

回答:


13

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

固定ソース:

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

+1私は彼がどのようにそれらのバック/フォワードクオートを手に入れたか疑問に思いました。
アーロン

C(")の文字列の正しい引用符もUnicode文字であるため、UnicodeとASCIIの引用符は区別を示すための最良の方法ではない可能性があります。(それらたまたまASCII文字ですが、誰かが2つの間で選択しているときはいつでも、それらのファイルはおそらくUnicode形式で保存されます
。Unixの

他の卑劣なキャラクターはの代わりです-
Trevor Boyd Smith、

2

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

あなたが持っている:

Hello World\n

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

"Hello World\n"

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

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

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

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


問題が解決しました。私のプログラムはコンパイルされています。tanxalot
Zahid

1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.