Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2958 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [A priori RESOLU] question pour un cas de si multiple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[A priori RESOLU] question pour un cas de si multiple

n°2324756
jean-miche​l-kevin
Posté le 26-11-2018 à 11:09:40  profilanswer
 

Bonjour à tous,
 
J'aurais voulu savoir s'il était possible d'utiliser une variable de type char, comprenant plusieurs caractères dans un switch.
 
J'ai cru comprendre que la variable char dans le cadre d'un switch était un int déguisé, et j'aimerai proposer, pour un effet plus intuitif, autre chose que des lettres ou ou des numéros en guise de saisie.
 
Est-ce donc possible? Et si oui, pourriez vous m'indiquer la démarche à suivre, ou m'aiguiller dans la recherche d'une solution?
 
Merci


Message édité par jean-michel-kevin le 28-11-2018 à 14:59:38
mood
Publicité
Posté le 26-11-2018 à 11:09:40  profilanswer
 

n°2324812
PetitJean
Bon ben hon
Posté le 27-11-2018 à 02:05:04  profilanswer
 

Le seul moyen à ma connaissance d'utiliser une chaîne de caractères (char *) pour lister les cas, c'est d'enchaîner les if / else if [:spamafote]
 
et pour comparer les chaînes, tu peux utiliser la fonction 'strcmp' ;)


---------------
Non
n°2324842
jean-miche​l-kevin
Posté le 27-11-2018 à 12:09:50  profilanswer
 

Merci le petit, c'est sympa de se serrer les coudes entre jean :)

n°2324848
rat de com​bat
attention rongeur méchant!
Posté le 27-11-2018 à 15:41:07  profilanswer
 

Citation :

et pour comparer les chaînes, tu peux utiliser la fonction 'strcmp' ;)

Selon les circonstances strNcmp est mieux. :o

 
PetitJean a écrit :

Le seul moyen à ma connaissance d'utiliser une chaîne de caractères (char *) pour lister les cas, c'est d'enchaîner les if / else if[:spamafote]

Si les chaînes font 8 octets ou moins on peut très bien utiliser switch. :whistle:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. //système 64 bits soit 8 octets par unsigned int
  5. unsigned int to_int(const char const * s)
  6. {
  7. int i;
  8. unsigned int r=0;
  9. for(i=0; i<strlen(s); i++)
  10. {
  11.  r|=s[i]<<(8*i);
  12. }
  13. return r;
  14. }
  15. int main(void)
  16. {
  17. char string[10];
  18. while (1)
  19. {
  20.  printf("? " );
  21.  scanf("%s", string); //oui oui, buffer overflow et toussa, peu importe ici
  22.  switch(to_int(string))
  23.  {
  24.   case 1969581154: printf("bleu!" ); break;
  25.   case 1735749495: printf("rouge!" ); break;
  26.   case 1851881327: printf("orange!" ); break;
  27.   case 1953069157: printf("bye!" ); return 0; break; //"exit"
  28.   default: break;
  29.  }
  30.  printf("\n" );
  31. }
  32. return 0;
  33. }


Nan, sérieusement, faut pas faire ça bien sûr! :o
(Entre parenthèse, quelqu'un arrive à trouver une version de to_int() qui donne une constante au moment de la compilation pour la mettre dans le switch? J'ai testé avec une macro, aucune chance. C'est juste pour ma culture perso...)


Message édité par rat de combat le 27-11-2018 à 15:51:22
n°2324862
jean-miche​l-kevin
Posté le 28-11-2018 à 00:49:11  profilanswer
 

ok merci pour tout


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [A priori RESOLU] question pour un cas de si multiple

 

Sujets relatifs
question en javascriptquestion sur python triangle * couronne
question sur la méthode de Viola et Jones sur la detection d'objetCréer un formlaire question/réponse
question de programmation python GPIO et raspbianUne simple question sur les bases de données (Débutant)
[PHP] Question sur les sessions et leur expirationPetite question rapide
[Resolu][C++] Question Architecture avec interface multiplequestion sur l'héritage multiple
Plus de sujets relatifs à : [A priori RESOLU] question pour un cas de si multiple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR