J'ai écrit ce programme:
#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}
Je l'ai enregistré sous first.c
et 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?
Réponses:
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:
la source
"
) 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.)–
lieu de-
.Vous enfermez votre chaîne dans le mauvais type de guillemets.
Vous avez:
Vous devriez plutôt avoir:
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
gedit
installé par défaut (bien qu'il existe également de nombreux autres éditeurs de texte). Comme de nombreux éditeurs de texte,gedit
fournit 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 .
la source
Vous pouvez utiliser la
sed
commande pour résoudre ces problèmes.Cela vous donnera un aperçu rapide de ce qui sera remplacé.
Cela fera les remplacements et mettra le remplacement dans un nouveau fichier appelé
WithoutSmartQuotes.txt
:Cela écrasera le fichier d'origine:
la source