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

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

Marsh Posté le 22-03-2004 à 18:10:27    

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

Reply

Marsh Posté le 22-03-2004 à 18:10:27   

Reply

Marsh Posté le 22-03-2004 à 18:13:01    

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

Reply

Marsh Posté le 22-03-2004 à 20:41:21    

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(...)).

Reply

Marsh Posté le 22-03-2004 à 20:50:50    

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 !
Reply

Marsh Posté le 22-03-2004 à 21:03:55    


 
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?

Reply

Marsh Posté le 22-03-2004 à 21:40:07    

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

Reply

Marsh Posté le 22-03-2004 à 23:10:33    

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

Reply

Marsh Posté le 22-03-2004 à 23:11:25    

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
Reply

Marsh Posté le 22-03-2004 à 23:12:56    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed