web-dev-qa-db-fra.com

Comment corriger les erreurs de compilation qui mentionnent "errant‘ \ 342 ’’ et ’stray’ ’\ 200’ ’?

J'ai écrit ce programme:

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

Je l’ai enregistré sous le nom first.c et essayé de le compiler, mais en recevant ce problème, j’ai aussi installé le compilateur 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

Comment puis-je résoudre ce problème?

9
Zahid

Le problème est que vous avez des guillemets Unicode au lieu de guillemets ASCII; Votre éditeur les a probablement modifiés automatiquement ou vous avez copié le texte d'un site qui le fait automatiquement dans son logiciel auteur. Remplacez les guillemets par ASCII quote normal (0x22, ") et cela devrait fonctionner.

Source fixe:

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

Vous enfermez votre chaîne dans le mauvais type de citations.

Tu as:

“Hello World\n”

Vous devriez plutôt avoir:

"Hello World\n"

Bien que les citations que vous avez utilisées soient similaires, elles ne sont pas reconnues par un compilateur C comme englobant une chaîne. Ainsi, vous obtenez des messages d'erreur sur les caractères Unicode non reconnus et des messages d'erreur indiquant que le contenu de la chaîne est interprété comme un code de programme non entre guillemets.

Vous remarquerez que les citations que vous avez utilisées ont des caractères distincts pour le début et la fin d'une citation (elles sont courbées de la manière dont les citations sont souvent composées). De nombreux traitements de texte - comme Jobin a suggéré - transformeront automatiquement les guillemets simples " en guillemets fantaisie. Si vous utilisez un traitement de texte pour composer des programmes en C, utilisez plutôt un éditeur de texte.

Ubuntu est livré avec gedit installé par défaut (bien qu’il existe de nombreux autres éditeurs de texte parmi lesquels choisir). Comme de nombreux éditeurs de texte, gedit fournit la surbrillance syntaxique pour de nombreux langages de programmation, notamment le langage C (le texte sera donc différent dans votre programme et sera affiché dans différentes couleurs pour indiquer sa signification), ce qui est pratique et crée un éditeur de texte beaucoup plus pratique et convivial pour la programmation qu'un traitement de texte.

Cela peut être spécifique à Ubuntu, si vous êtes habitué à un éditeur de texte sur une autre plate-forme qui réduit automatiquement les guillemets collés à la version non sophistiquée. Mais cette question pourrait finir par être fermée et migrée vers débordement de pile .

2
Eliah Kagan

Vous pouvez utiliser la commande sed pour résoudre ces problèmes.

Cela vous donnera un aperçu rapide de ce qui sera remplacé.

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

Cela fera les remplacements et mettra le remplacement dans un nouveau fichier appelé WithoutSmartQuotes.txt:

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

Cela écrasera le fichier d'origine:

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