Я написал эту программу:
#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
Как я могу решить эту проблему?
Ответы:
Проблема в том, что у вас вместо кавычек ASCII есть кавычки Unicode; возможно, ваш редактор автоматически изменил их, или вы скопировали текст с сайта, который делает это автоматически, в своем авторском программном обеспечении. Замените кавычки на обычные кавычки ASCII (0x22, "), и это должно работать.
Фиксированный источник:
источник
"
) также являются символами Unicode. (Они также бывают символами ASCII, но каждый раз, когда кто-то выбирает между ними, их файл, вероятно, сохраняется в каком-то формате Unicode. В Unix-подобной системе, обычно UTF-8.)–
вместо-
.Вы заключаете свою строку в неправильные цитаты.
У тебя есть:
Вместо этого вы должны иметь:
Хотя используемые вами кавычки выглядят похоже, они не распознаются компилятором C как включающие строку. Таким образом, вы получаете сообщения об ошибках о нераспознанных символах Unicode, и вы получаете сообщения об ошибках, показывающие, что содержимое строки интерпретируется как не заключенный в кавычки программный код.
Вы заметите, что используемые вами кавычки имеют отдельные символы для начала и окончания кавычки (они изогнуты так, как часто набираются кавычки). Многие текстовые редакторы, как предложил Джобин, автоматически превращают простые
"
кавычки в такие причудливые кавычки. Если вы используете текстовый процессор для написания программ на C, вам следует использовать текстовый редактор.Ubuntu поставляется с
gedit
установленным по умолчанию (хотя есть и другие текстовые редакторы на выбор). Как и многие текстовые редакторы,gedit
обеспечивает подсветку синтаксиса для многих языков программирования, включая C (поэтому разный текст в вашей программе будет отображаться разными цветами для обозначения его значения), что является удобной функцией и делает текстовый редактор намного более удобным и удобным для пользователя. программирование, чем текстовый процессор.Это может быть специфично для Ubuntu, если вы привыкли к текстовому редактору на другой платформе, который автоматически сокращает вставленные кавычки до необычной версии. Но этот вопрос может оказаться закрытым и перенесенным в переполнение стека .
источник
Вы можете использовать
sed
команду, чтобы исправить эти проблемы.Это даст вам быстрый предварительный просмотр того, что будет заменено.
Это сделает замены и поместит замену в новый файл с именем
WithoutSmartQuotes.txt
:Это заменит исходный файл:
источник