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

  FORUM HardWare.fr
  Programmation
  C

  [C] Comment faire un switch sur une chaine de caractère ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Comment faire un switch sur une chaine de caractère ?

n°680500
Face_Off
Posté le 22-03-2004 à 18:10:27  profilanswer
 

Salut !  :hello:  
 
Est-ce-qu'il y a un moyen en C de faire un switch sur une chaine de caractère ? :heink:  
 
Concretement, un utilisateur tape une commande qui est stockée dans une variable "char* commande;" à l'aide d'un scanf().
Je veut simplement faire un switch sur cette variable, mais pour les "case" je ne peut pas mettre de chaine de caractère.
 
C'est surement tout con, mais même en cherchant sur google j'ai pas trouvé :D

mood
Publicité
Posté le 22-03-2004 à 18:10:27  profilanswer
 

n°680502
Taz
bisounours-codeur
Posté le 22-03-2004 à 18:13:01  profilanswer
 

non c'est pas possible
ne pas utiliser scanf pour les char*, préférer fgets

n°680606
matafan
Posté le 22-03-2004 à 20:41:21  profilanswer
 

Si tu as le gout du risque, tu peux faire un switch sur une chaine si elle fait moins de 4 caracteres :D Pour etre clair : ca marche, mais ce n'est pas propre, pas portable, et tu vas surement te prendre des warnings.
 
Fait des else if (0 == strcmp(...)).

n°680616
kadreg
profil: Utilisateur
Posté le 22-03-2004 à 20:50:50  profilanswer
 

matafan a écrit :

tu peux faire un switch sur une chaine si elle fait moins de 4 caracteres :D  


 
[:the real moins moins]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°680626
skelter
Posté le 22-03-2004 à 21:03:55  profilanswer
 


 
tu rigole mais ca se fait beaucoup ce genre de truc, tu t'es jamais demander pourquoi certain language script avait des commandes limiter a 4 caracteres?

n°680651
Face_Off
Posté le 22-03-2004 à 21:40:07  profilanswer
 

Oki merci  :jap:  
 
Effectivement j'ai utilisé des "if (0 == strcmp(...))" ça marche trés bien.

n°680752
pospos
Posté le 22-03-2004 à 23:10:33  profilanswer
 

a propos de switch sur des chaines de caracteres, et en speciale dedicace à Kadreg qui adore le Perl, voila un petit module qui genere les switch "optimaux" pour des token donnés:
 
http://search.cpan.org/~mhx/Devel- [...] -0.03/C.pm

n°680753
darkoli
Le Petit Dinosaure Bleu
Posté le 22-03-2004 à 23:11:25  profilanswer
 

Sinon si tu veux vraiement utiliser la commande switch tu peux toujours passer par une fonction qui va te convertir ta chaîne en numéro. :D
 

int animal(char* chaine)
{
 if (strcmp(chaine, "Lapin" ) == 0) return 1;
 if (strcmp(chaine, "Tortue" ) == 0) return 2;
 return 0;
}


Message édité par darkoli le 22-03-2004 à 23:11:41
n°680754
Taz
bisounours-codeur
Posté le 22-03-2004 à 23:12:56  profilanswer
 

j'avais déjà expliqué tout ça dans un topic :  comment faire ce genre d'opération en utilisant un recherche dichotomique (grosso modo la meme chose que le swtich, mais facil à écrire.
 
la meme chose avec gperf, qui génère une fonction de hachage unique, et là ça sera plus rapide que tout


Message édité par Taz le 22-03-2004 à 23:15:58

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

  [C] Comment faire un switch sur une chaine de caractère ?

 

Sujets relatifs
Récupérer un mot d'1 ligne en ayant la position de son 1er caractèreconcaténation chaine de caractères
a propos du switch "default"Nb de caractères dans une chaine...
detection de fin de chaine de caracteres[SNMP] Retouver le switch correspondant à une adresse MAC, assez urgen
[ASM] Conversion entier en chaine decimalverifier le dernier caractère d'une chaine
executer une chaine de caractere 
Plus de sujets relatifs à : [C] Comment faire un switch sur une chaine de caractère ?


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