Comment faire un switch sur une chaine de caractère ? [C] - C - Programmation
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
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 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(...)).
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 |
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?
Marsh Posté le 22-03-2004 à 21:40:07
Oki merci
Effectivement j'ai utilisé des "if (0 == strcmp(...))" ça marche trés bien.
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
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.
int animal(char* chaine) |
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
Marsh Posté le 22-03-2004 à 18:10:27
Salut !
Est-ce-qu'il y a un moyen en C de faire un switch sur une chaine de caractère ?
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é