Я написал эту программу:
#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; возможно, ваш редактор автоматически изменил их, или вы скопировали текст с сайта, который делает это автоматически, в своем авторском программном обеспечении. Замените кавычки на обычные кавычки ASCII (0x22, "), и они должны работать.
Исправлен источник:
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Вы заключаете свою строку в неправильные цитаты.
У вас есть:
“Hello World\n”
Вместо этого вы должны иметь:
"Hello World\n"
Хотя используемые вами кавычки выглядят одинаково, они не распознаются компилятором C как включающие строка. Таким образом, вы получаете сообщения об ошибках о нераспознанных символах Unicode, и вы получаете сообщения об ошибках, показывающие, что содержимое строки интерпретируется как не заключенный в кавычки программный код.
Вы заметите, что используемые вами кавычки имеют отдельные символы для начала и окончания кавычки (они изогнуты так, как часто набираются кавычки). Многие текстовые процессоры, как предложил Джобин , автоматически превращают простые "
цитаты в такие причудливые кавычки. Если вы используете текстовый процессор для написания программ на С, вам следует использовать вместо этого текстовый редактор.
Ubuntu поставляется с gedit
, установленным по умолчанию (хотя есть и другие текстовые редакторы на выбор). Как и многие текстовые редакторы, gedit
обеспечивает подсветку синтаксиса для многих языков программирования, включая C (поэтому разный текст в вашей программе будет отображаться разными цветами для обозначения его значения), что является удобной функцией и делает текстовый редактор гораздо более удобный и удобный для программирования, чем текстовый процессор.
Это может быть связано с Ubuntu, если вы привыкли к текстовому редактору на другой платформе, который автоматически сокращает вставленные кавычки до необычной версии. Но этот вопрос может оказаться закрытым и перенесенным в Переполнение стека .
Вы можете использовать команду 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
.