Как исправить ошибки компиляции, в которых упоминаются «блуждающие» \ 342 »и« блуждающие »\ 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 или Microsoft Word?
Jobin
если вы скопировали код откуда-то, то переписайте код самостоятельно, так как скопированный код может содержать некоторые нежелательные коды.

Ответы:

13

Проблема в том, что у вас вместо кавычек ASCII есть кавычки Unicode; возможно, ваш редактор автоматически изменил их, или вы скопировали текст с сайта, который делает это автоматически, в своем авторском программном обеспечении. Замените кавычки на обычные кавычки ASCII (0x22, "), и это должно работать.

Фиксированный источник:

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}
Кшиштоф Косински
источник
+1 Мне было интересно, как он получил эти назад / вперед цитаты там.
Аарон
Кавычки Unicode и ASCII, возможно, не лучший способ заявить о различии, поскольку правильные кавычки для строк в C ( ") также являются символами Unicode. (Они также бывают символами ASCII, но каждый раз, когда кто-то выбирает между ними, их файл, вероятно, сохраняется в каком-то формате Unicode. В Unix-подобной системе, обычно UTF-8.)
Элия ​​Каган,
другие подлые символы вместо -.
Тревор Бойд Смит
2

Вы заключаете свою строку в неправильные цитаты.

У тебя есть:

Hello World\n

Вместо этого вы должны иметь:

"Hello World\n"

Хотя используемые вами кавычки выглядят похоже, они не распознаются компилятором C как включающие строку. Таким образом, вы получаете сообщения об ошибках о нераспознанных символах Unicode, и вы получаете сообщения об ошибках, показывающие, что содержимое строки интерпретируется как не заключенный в кавычки программный код.

Вы заметите, что используемые вами кавычки имеют отдельные символы для начала и окончания кавычки (они изогнуты так, как часто набираются кавычки). Многие текстовые редакторы, как предложил Джобин, автоматически превращают простые "кавычки в такие причудливые кавычки. Если вы используете текстовый процессор для написания программ на C, вам следует использовать текстовый редактор.

Ubuntu поставляется с geditустановленным по умолчанию (хотя есть и другие текстовые редакторы на выбор). Как и многие текстовые редакторы, geditобеспечивает подсветку синтаксиса для многих языков программирования, включая C (поэтому разный текст в вашей программе будет отображаться разными цветами для обозначения его значения), что является удобной функцией и делает текстовый редактор намного более удобным и удобным для пользователя. программирование, чем текстовый процессор.

Это может быть специфично для Ubuntu, если вы привыкли к текстовому редактору на другой платформе, который автоматически сокращает вставленные кавычки до необычной версии. Но этот вопрос может оказаться закрытым и перенесенным в переполнение стека .

Элия ​​Каган
источник
проблема решена. Моя программа составлена. tanx много
Захид
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
cokedude
источник