Erreur de compilation en C
lilian
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour , j'ai écrit ce petit programme en C , qui prend est un programme qui copie son entrée en sortie , en remplaçant les espaces par la lettre x :
et gcc me dire que il y a une erreur de syntaxe ligne 10 , c undeclared ( first use in this function ) , quelqu'un sait comment résoudre le problème svp?
merci
#include <stdio.h> int main() { int a; char c; c = 'x'; while ((a = getchar()) != EOF) if ( a == ' ') putchar(c); }
et gcc me dire que il y a une erreur de syntaxe ligne 10 , c undeclared ( first use in this function ) , quelqu'un sait comment résoudre le problème svp?
merci
A voir également:
- Erreur de compilation en C
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
8 réponses
ben non çà va pas , moi j'ai appris à déclarer une variable , donc ici :
char c;
et ensuite à lui donner une valeur ( c'est l'affectation je crois ) , j'ai jamais vu qu'on écrivait char c = 'x'; normalement c'est déclaration et affectation , çà va pas cette histoire çà m'embrouille...
char c;
et ensuite à lui donner une valeur ( c'est l'affectation je crois ) , j'ai jamais vu qu'on écrivait char c = 'x'; normalement c'est déclaration et affectation , çà va pas cette histoire çà m'embrouille...
Euh c'est parfaitement standard d'initialiser à la déclaration c'est même à mon avis une bonne habitude à prendre.
Chez moi ça compile, (aussi bien en initialisant à la déclaration où en le faisant en deux fois) je ne comprends pas trop :
Et à l'excution ça fait ce que tu veux :
Par contre on est obligé de quitter le bazar avec ctrl c car je vois pas trop comment déclencher un eof au clavier.
Perso j'ai gcc 4.0.2 (tu peux verifier ta version avec gcc --version) mais je doute que ça vienne de là... Vérifie en copiant le code ci dessus ce que ça donne chez toi...
Bonne chance
Chez moi ça compile, (aussi bien en initialisant à la déclaration où en le faisant en deux fois) je ne comprends pas trop :
#include <stdio.h> int main(){ int a; char c='x'; while ((a=getchar())!=EOF){ if (a==' ') putchar(c); } return 0; }
Et à l'excution ça fait ce que tu veux :
(mando@seiko) (~) $ ./a.out assasas fafafef dafdfaaz xx faf afaa fafeafaeaf affaf xxxx
Par contre on est obligé de quitter le bazar avec ctrl c car je vois pas trop comment déclencher un eof au clavier.
Perso j'ai gcc 4.0.2 (tu peux verifier ta version avec gcc --version) mais je doute que ça vienne de là... Vérifie en copiant le code ci dessus ce que ça donne chez toi...
Bonne chance
Salut,
Perso j'ai fait copier/coller entre cette page et mon éditeur de texte (vi) puis
sauvegarder sous le nom gcc_pb.c puis "gcc -o gcc_pb gccpb.c" et pas de pb
Précises un peu ton problème : OS, version de gcc, ligne de compilation
En premier lieu, regardes si tu as pas un caractère 'à la con' dans ton source.
Pour info, je suis sous slackware linux 10.1 avec gcc 3.3.4 lors du test.
A+, crabs
Perso j'ai fait copier/coller entre cette page et mon éditeur de texte (vi) puis
sauvegarder sous le nom gcc_pb.c puis "gcc -o gcc_pb gccpb.c" et pas de pb
Précises un peu ton problème : OS, version de gcc, ligne de compilation
En premier lieu, regardes si tu as pas un caractère 'à la con' dans ton source.
Pour info, je suis sous slackware linux 10.1 avec gcc 3.3.4 lors du test.
A+, crabs
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LOL
On peut déclarer et instancier( affecter une valeur pour la première fois) en même temps.
C'est même conseillé, autant que possible pour éviter de lire dans la variable avant justement de lui avoir affecter une valeur.
Ensuite je suis pas un pro en C, mais je me défends bien en C++, et je ne vois aucune erreur dans ton programme.
Sinon deuxièeme solution si la première ne te convient pas c'est :
et de virer ta variable c, vu qu'elle ne sert plus.
Ceci dit, l'erreur gcc est bizarre.... Ce compilateur n'a pas pour habitude de déclarer une erreur là ou il n'en a pas...
On peut déclarer et instancier( affecter une valeur pour la première fois) en même temps.
C'est même conseillé, autant que possible pour éviter de lire dans la variable avant justement de lui avoir affecter une valeur.
Ensuite je suis pas un pro en C, mais je me défends bien en C++, et je ne vois aucune erreur dans ton programme.
Sinon deuxièeme solution si la première ne te convient pas c'est :
putchar('x');
et de virer ta variable c, vu qu'elle ne sert plus.
Ceci dit, l'erreur gcc est bizarre.... Ce compilateur n'a pas pour habitude de déclarer une erreur là ou il n'en a pas...
alors mon programme compile , mais plusieurs choses étranges :
Mon OS : mandrake 10.2
gcc 3.4.3
mon programme marche , ce qui est curieux c'est que je tape cette phrase :
coucou , tu vas bien, moi pas mal , et je dois taper sur la touche entrée au lieu de CTRL + d pour avoir le résultat , et le résultat c'est :
xxxxxxx , vu qu'il y a 7 espaces , hors moi je ne veux pas çà , je veux que ma phrase reste mais avec les x au lieu des espaces , je devrais donc avoir :
coucoux,xtuxvasxbien,xmoixpasxmal
Mon OS : mandrake 10.2
gcc 3.4.3
mon programme marche , ce qui est curieux c'est que je tape cette phrase :
coucou , tu vas bien, moi pas mal , et je dois taper sur la touche entrée au lieu de CTRL + d pour avoir le résultat , et le résultat c'est :
xxxxxxx , vu qu'il y a 7 espaces , hors moi je ne veux pas çà , je veux que ma phrase reste mais avec les x au lieu des espaces , je devrais donc avoir :
coucoux,xtuxvasxbien,xmoixpasxmal
Salut,
Pour s'amuser voilà un petit script en Perl, qui fait ce que tu veux en C.
Et le résultat
Pour s'amuser voilà un petit script en Perl, qui fait ce que tu veux en C.
#! /usr/bin/perl -w use strict; print "Entrez une phrase : "; chomp(my $chaine=<STDIN>); $chaine=~s/\s+/x/g; print "$chaine\n";
Et le résultat
[lamitest@localhost bin]$ perl suppr_espace_dan_fichier.pl Entrez une phrase : coucou, tu vas bien, moi pas mal coucou,xtuxvasxbien,xmoixpasxmal
ce n'est que le debut moi je vois plein d'erreur (d'indentation,et de syntaxe).
je te propose de jeter un coup d'oeil sur le miens(bon j'ai pas bien verifié ,mais c'est meilleurs que le tien)
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[]){
char entree[20];
char sortie[20];
int i;
if(argc!=2){
sprintf(stder,"USAGE [CHAINE DE CARACTERE],argv[1]);
exit(1);
}
entree=argv[1];
for(i=0,i<20,i++){
if(strcmp(entree[i],' ')==0){
sortie[i]='x';
}
else{
sortie[i]=entree[i];
}
}
printf("votre chaine est :%s\n",sortie);
}
je te propose de jeter un coup d'oeil sur le miens(bon j'ai pas bien verifié ,mais c'est meilleurs que le tien)
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[]){
char entree[20];
char sortie[20];
int i;
if(argc!=2){
sprintf(stder,"USAGE [CHAINE DE CARACTERE],argv[1]);
exit(1);
}
entree=argv[1];
for(i=0,i<20,i++){
if(strcmp(entree[i],' ')==0){
sortie[i]='x';
}
else{
sortie[i]=entree[i];
}
}
printf("votre chaine est :%s\n",sortie);
}
J'ai le même problème : j'ai fait un programme tout con qui permet de visualiser un entier après l'avoir saisi (ce qui ne sert à rien, mais c'était juste pour exposer le problème :D).
#include <stdio.h>
#include <conio.c>
#include <math.h>
main()
{
int a;
clrscr();
gotoxy(5,5);
printf("Saisissez un entier");
scanf("%d",&a);
printf("Visu de l'entier : %d",a);
getch();
}
Il me met la même erreur pour 3 fonctions : `clrscr' undeclared (first use this function)
`gotoxy' undeclared (first use this function)
`getch' undeclared (first use this function)
J'ai pas compris les explications du dessus car je fais mes 1ers pas en C. Please help !!En plus ce programme marche nikel au bahut, alors que chez moi ça marche pas :'(
#include <stdio.h>
#include <conio.c>
#include <math.h>
main()
{
int a;
clrscr();
gotoxy(5,5);
printf("Saisissez un entier");
scanf("%d",&a);
printf("Visu de l'entier : %d",a);
getch();
}
Il me met la même erreur pour 3 fonctions : `clrscr' undeclared (first use this function)
`gotoxy' undeclared (first use this function)
`getch' undeclared (first use this function)
J'ai pas compris les explications du dessus car je fais mes 1ers pas en C. Please help !!En plus ce programme marche nikel au bahut, alors que chez moi ça marche pas :'(
Salut Jerepain !
Je pense que je ferais bcp plus simple pour afficher un entier que je saisi, moi je ferais :
#include <stdio.h>
void main()
{
int a;
printf("Entier ?\n");
scanf("%d",&a);
printf("\nVisu de l'entier a = %d",a);
}
Voila moi comment je ferais pour saisir un entier et l'afficher ensuite !
:)
++Jerepain
Je pense que je ferais bcp plus simple pour afficher un entier que je saisi, moi je ferais :
#include <stdio.h>
void main()
{
int a;
printf("Entier ?\n");
scanf("%d",&a);
printf("\nVisu de l'entier a = %d",a);
}
Voila moi comment je ferais pour saisir un entier et l'afficher ensuite !
:)
++Jerepain