Ich habe dieses Programm geschrieben:
#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}
Ich habe es als gespeichert first.c
und versucht zu kompilieren, aber als ich dieses Problem erhielt, habe ich auch den gcc-Compiler installiert.
$ 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
Wie kann ich dieses Problem beheben?
Antworten:
Das Problem ist, dass Sie Unicode-Anführungszeichen anstelle von ASCII-Anführungszeichen haben. Wahrscheinlich hat Ihr Editor sie automatisch geändert, oder Sie haben den Text von einer Site kopiert, die dies automatisch in ihrer Authoring-Software tut. Ersetzen Sie die Anführungszeichen durch normale ASCII-Anführungszeichen (0x22, ") und es sollte funktionieren.
Feste Quelle:
quelle
"
) ebenfalls Unicode-Zeichen sind. (Es handelt sich auch um ASCII-Zeichen, aber jedes Mal, wenn jemand zwischen beiden wählt, wird seine Datei wahrscheinlich in einem Unicode-Format gespeichert. Auf einem Unix-ähnlichen System, normalerweise UTF-8.)–
anstelle der-
.Sie schließen Ihre Zeichenfolge in falsche Anführungszeichen ein.
Du hast:
Sie sollten stattdessen haben:
Die von Ihnen verwendeten Anführungszeichen sehen zwar ähnlich aus, werden jedoch von einem C-Compiler nicht als eine Zeichenfolge eingeschlossen erkannt. Auf diese Weise erhalten Sie Fehlermeldungen zu nicht erkannten Unicode-Zeichen und Fehlermeldungen, die anzeigen, dass der Inhalt der Zeichenfolge als nicht in Anführungszeichen stehender Programmcode interpretiert wird.
Sie werden feststellen, dass die von Ihnen verwendeten Anführungszeichen separate Zeichen zum Beginnen und Beenden eines Zitats haben (sie sind so gekrümmt, wie Anführungszeichen häufig gesetzt werden). Viele Textverarbeitungsprogramme - wie Jobin vorgeschlagen hat - verwandeln einfache
"
Anführungszeichen automatisch in solche ausgefallenen Anführungszeichen. Wenn Sie zum Erstellen von C-Programmen ein Textverarbeitungsprogramm verwenden, sollten Sie stattdessen einen Texteditor verwenden.Ubuntu
gedit
wird standardmäßig installiert (obwohl auch viele andere Texteditoren zur Auswahl stehen). Wie viele Texteditoren,gedit
bietet Syntax - Hervorhebung für viele Programmiersprachen wie C (so unterschiedlichen Text in Ihrem Programm wird in unterschiedlichen Farben dargestellt , seine Bedeutung zu bezeichnen), die eine praktische Funktion und macht einen Texteditor viel bequemer und benutzerfreundlich für Programmierung als ein Textverarbeitungsprogramm.Dies kann Ubuntu-spezifisch sein, wenn Sie an einen Texteditor auf einer anderen Plattform gewöhnt sind, der eingefügte Anführungszeichen automatisch auf die nicht ausgefallene Version reduziert. Diese Frage wird jedoch möglicherweise geschlossen und auf Stack Overflow migriert .
quelle
Mit dem
sed
Befehl können Sie diese Probleme beheben.Dies gibt Ihnen eine schnelle Vorschau auf das, was ersetzt wird.
Dadurch werden die Ersetzungen durchgeführt und die Ersetzung in eine neue Datei mit dem Namen
WithoutSmartQuotes.txt
:Dadurch wird die Originaldatei überschrieben:
quelle