Comment corriger les erreurs de compilation qui mentionnent «Stray '\ 342'» et «Stray '\ 200'»? [fermé]


9

J'ai écrit ce programme:

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

Je l'ai enregistré sous first.cet j'ai essayé de compiler, mais en recevant ce problème, j'ai également 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?


Avez-vous copié ce programme à partir d'un autre traitement de texte ou d'un document comme Libre Office ou Microsoft Word?
jobin

si vous avez copié le code quelque part, réécrivez le code par vous-même car le code que vous avez copié peut contenir des codes indésirables.

Réponses:


13

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 de création. Remplacez les guillemets par des guillemets ASCII normaux (0x22, ") et cela devrait fonctionner.

Source fixe:

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

+1 Je me demandais comment il avait obtenu ces devis avant / arrière.
Aaron

Les guillemets Unicode vs ASCII ne sont peut-être pas le meilleur moyen de faire la distinction, car les guillemets corrects pour les chaînes en C ( ") sont également des caractères Unicode. (Ils se trouvent également être des caractères ASCII mais chaque fois que quelqu'un choisit entre les deux, leur fichier est probablement enregistré au format Unicode. Sur un système de type Unix, généralement UTF-8.)
Eliah Kagan

d'autres personnages sournois sont le lieu de -.
Trevor Boyd Smith

2

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

Vous avez:

Hello World\n

Vous devriez plutôt avoir:

"Hello World\n"

Bien que les guillemets que vous avez utilisés se ressemblent, ils ne sont pas reconnus par un compilateur C comme contenant une chaîne. Ainsi, vous obtenez des messages d'erreur sur les caractères Unicode non reconnus, et vous obtenez des messages d'erreur indiquant que le contenu de la chaîne est interprété comme un code de programme non cité.

Vous remarquerez que les guillemets que vous avez utilisés ont des caractères séparés pour commencer et terminer une citation (ils sont courbes comme les guillemets sont souvent composés). De nombreux traitements de texte - comme Jobin l'a suggéré - transformeront automatiquement les "guillemets simples en guillemets fantaisistes. Si vous utilisez un traitement de texte pour composer des programmes C, vous devez utiliser un éditeur de texte à la place.

Ubuntu est livré avec geditinstallé par défaut (bien qu'il existe également de nombreux autres éditeurs de texte). Comme de nombreux éditeurs de texte, geditfournit une coloration syntaxique pour de nombreux langages de programmation, y compris C (donc un texte différent dans votre programme sera affiché dans différentes couleurs pour signifier sa signification), ce qui est une fonctionnalité pratique et rend un éditeur de texte beaucoup plus pratique et convivial pour 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 Stack Overflow .


problème résolu.my programme est compilé.tanx beaucoup
Zahid

1

Vous pouvez utiliser la sedcommande 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.