Erreur de compilation en C
Fermé
lilian
-
9 nov. 2005 à 13:37
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 11 nov. 2005 à 12:09
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 11 nov. 2005 à 12:09
A voir également:
- Erreur de compilation en C
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 5000 france tv - Forum iPhone
- Erreur g030 - Forum Bbox Bouygues
8 réponses
Z3uS-Su3Z
Messages postés
94
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
11 juin 2007
12
9 nov. 2005 à 13:42
9 nov. 2005 à 13:42
Salut,
Essayes : char c = 'x';
Essayes : char c = 'x';
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...
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
9 nov. 2005 à 14:05
9 nov. 2005 à 14:05
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
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
9 nov. 2005 à 14:08
9 nov. 2005 à 14:08
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
Z3uS-Su3Z
Messages postés
94
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
11 juin 2007
12
9 nov. 2005 à 14:08
9 nov. 2005 à 14:08
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
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
9 nov. 2005 à 14:42
9 nov. 2005 à 14:42
Normal, ton algo dit si j'ai un espace j'affiche un 'x'
Il lui manque : 'pour tout autre caractère, j'affiche ce caractère'
A+, crabs
Il lui manque : 'pour tout autre caractère, j'affiche ce caractère'
A+, crabs
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 nov. 2005 à 10:32
11 nov. 2005 à 10:32
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
Z3uS-Su3Z
Messages postés
94
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
11 juin 2007
12
9 nov. 2005 à 15:38
9 nov. 2005 à 15:38
Chose que tu pourra faire facilement en associant un "else" à ton "if" :p
anawak
Messages postés
53
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
1 août 2010
9
9 nov. 2005 à 16:00
9 nov. 2005 à 16:00
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 :'(
nicO.2x45
Messages postés
76
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
17 novembre 2007
2
>
Jerepain
11 nov. 2005 à 01:38
11 nov. 2005 à 01:38
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
>
Jerepain
11 nov. 2005 à 12:09
11 nov. 2005 à 12:09
Salut.
Jerepain, je remarque que toute les fonctions qu'il ne reconnait pas font partie de la même bibliothèque. Et il me semble que c'est <stdlib.h>.
sous certaine configuration, certain fichier en tete sont inclus par défaut.
Voila
Jerepain, je remarque que toute les fonctions qu'il ne reconnait pas font partie de la même bibliothèque. Et il me semble que c'est <stdlib.h>.
sous certaine configuration, certain fichier en tete sont inclus par défaut.
Voila