Como corrigir erros de compilação que mencionam "vadios '\ 342'" e "vadios '\ 200'"? [fechadas]

9

Eu escrevi este programa:

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

Salvei-o como first.ce tentei compilar, mas, ao receber esse problema, também instalei o compilador 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

Como posso resolver este problema?

Zahid
fonte
Você copiou este programa de outro processador ou documento de texto como o Libre office ou o Microsoft Word?
Jobin
se você copiou o código de algum lugar, reescreva-o por conta própria, pois o código copiado pode ter alguns códigos indesejados incorporados.

Respostas:

13

O problema é que você tem aspas Unicode em vez de aspas ASCII; provavelmente o seu editor os alterou automaticamente ou você copiou o texto de um site que faz isso automaticamente no software de criação. Substitua as aspas por aspas ASCII normais (0x22, ") e elas devem funcionar.

Fonte fixa:

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}
Krzysztof Kosiński
fonte
+1 Fiquei me perguntando como ele conseguiu essas citações de retorno / encaminhamento lá.
Aaron
As aspas Unicode vs. ASCII podem não ser a melhor maneira de indicar a distinção, pois as aspas corretas para cadeias de caracteres em C ( ") também são caracteres Unicode. (Eles também acontecerá a ser caracteres ASCII, mas sempre que alguém está escolhendo entre os dois, o seu arquivo provavelmente é guardado em algum formato Unicode Em um sistema Unix-like, geralmente UTF-8..)
Elias Kagan
outros caracteres sorrateiros são o lugar do -.
Trevor Boyd Smith
2

Você está colocando sua string no tipo errado de aspas.

Você tem:

Hello World\n

Em vez disso, você deve ter:

"Hello World\n"

Embora as aspas que você usou tenham aparência semelhante, elas não são reconhecidas por um compilador C como envolvendo uma string. Assim, você recebe mensagens de erro sobre caracteres Unicode não reconhecidos e mensagens de erro mostrando que o conteúdo da string está sendo interpretado como código de programa não citado.

Você notará que as aspas que você usou possuem caracteres separados para iniciar e finalizar uma cotação (elas são curvadas da maneira que as aspas costumam ser digitadas). Muitos processadores de texto - como Jobin sugeriu - transformarão automaticamente "aspas simples em aspas sofisticadas. Se você estiver usando um processador de texto para compor programas em C, use um editor de texto.

O Ubuntu vem com o geditinstalado por padrão (embora existam muitos outros editores de texto para você escolher). Como muitos editores de texto, geditfornece realce de sintaxe para muitas linguagens de programação, incluindo C (texto de modo diferente em seu programa irá mostrado em cores diferentes para indicar o seu significado), que é um recurso útil e faz um editor de texto muito mais conveniente e user-friendly para programação do que um processador de texto.

Isso pode ser específico do Ubuntu, se você estiver acostumado a um editor de texto em outra plataforma que reduz automaticamente as aspas coladas para a versão não sofisticada. Mas essa pergunta pode acabar sendo fechada e migrada para o Stack Overflow .

Eliah Kagan
fonte
problema resolvido. o programa é compilado. muito
Zahid
1

Você pode usar o sedcomando para corrigir esses problemas.

Isso fornecerá uma visualização rápida do que será substituído.

sed -re 's/”|“/"/g' File.txt

Isso fará as substituições e colocará a substituição em um novo arquivo chamado WithoutSmartQuotes.txt:

sed -re 's/”|“/"/g' File.txt > WithoutSmartQuotes.txt

Isso substituirá o arquivo original:

sed -i .bk -re 's/”|“/"/g' File.txt
cokeude
fonte