[C] probleme de chaînes de caractères

Es0pe Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, Voilà je voudrais faire une condition en comparant 2 chaines de caractères:

si la chaîne est égale à la chaîne "plus" : faire ça
si la chaîne est égale à la chaîne "moins" : faire ça

ce qui donnerait :

 if (strcmp(constat, plus) == 0)
         {
             tirageAleatoirePlus(aleatoire);
             }  
         else if (strcmp(constat, moins) ==0)  
         {
              tirageAleatoireMoins(aleatoire);
              }
         else
         {
             printf("vous etes cense dire 'plus' ou 'moins'");
             }


et voila ce que j'ai mis dans un .h

char constat[10], plus[]="plus", moins[]="moins";
long tirageAleatoirePlus(long aleatoire);
long tirageAleatoireMoins(long aleatoire);


mais lorsque je veux compiler il me met : " [Linker error] undefined reference to `strcmp(char*, char const*)' "

Si quelqu'un voit la solution

Merci
A voir également:

7 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
As tu inclus le header:string.h
@+
0
Es0pe Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   2
 
0uaip j'ai inclus tout ça puisque j'ai mes fonctions alentours qui marchent
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
J'ai legerement modifié ton code pour voir si cela compilait et marchait..j'ai pas eu de prb...
Pas definie les 2 fonction mais bon à priori, le prb ne vient pas de là...
#include<stdio.h>
#include<string.h>
long tirageAleatoirePlus(long aleatoire);
long tirageAleatoireMoins(long aleatoire);
int main()
{char constat[10], plus[]="plus", moins[]="moins";
for(;;)
{printf("donner une chaine de caractere");
scanf("%s",&constat);
if (strcmp(constat, plus) == 0)
         {printf("blabla");break;}
else {
		if (strcmp(constat, moins) ==0)  
         
             {printf("blibli") ;break;}
              
         	else
         
             printf("vous etes cense dire 'plus' ou 'moins'");
      }
}
getchar();       
return 1;
}
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
j'ai inclus tout ça puisque
T'en es sûr?
lami20j@debian:~/trash$ cat ccm10.c
#include<stdio.h>
#include<string.h>

int main()
{
  char constat[10], plus[]="plus", moins[]="moins";
  printf("constat ? ");
  scanf("%s",constat);

  if (strcmp(constat, plus) == 0)
    printf("plus\n");
  else if (strcmp(constat, moins) ==0)
    printf("moins\n");
  else
    printf("vous etes cense dire 'plus' ou 'moins'\n");
  return 0;
}
lami20j@debian:~/trash$ gcc ccm10.c
lami20j@debian:~/trash$ ./a.out
constat ? plus
plus
lami20j@debian:~/trash$ ./a.out
constat ? moins
moins
lami20j@debian:~/trash$ ./a.out
constat ? aaaa
vous etes cense dire 'plus' ou 'moins'
lami20j@debian:~/trash$

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Es0pe Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   2
 
a quoi sert le for(;;) ?

0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
C'est pour reprendre la boucle si la personne n'a pas saisi soit plus soit moins...
ainsi on lui redemande de resaisir constat tant qu'il n'a pas saisi plus ou moins....
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
il faut lié avec la lib standard, libstdc++.a ou libc.a, à rajouter dans les options de compilation.
quel est ton compilateur ?
Quelle est la commande que tu utilise pour compiler ?
0