Eu escrevi este programa:
#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}
Salvei-o como first.c
e 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?
Respostas:
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:
fonte
"
) 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..)–
lugar do-
.Você está colocando sua string no tipo errado de aspas.
Você tem:
Em vez disso, você deve ter:
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
gedit
instalado por padrão (embora existam muitos outros editores de texto para você escolher). Como muitos editores de texto,gedit
fornece 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 .
fonte
Você pode usar o
sed
comando para corrigir esses problemas.Isso fornecerá uma visualização rápida do que será substituído.
Isso fará as substituições e colocará a substituição em um novo arquivo chamado
WithoutSmartQuotes.txt
:Isso substituirá o arquivo original:
fonte