begin process at 2012 05 30 10:44:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

utiliser une string avec switch/case


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utiliser une string avec switch/case

vendredi 9 février 2007 à 09:41:38 | utiliser une string avec switch/case

potimarara

Salut a tous,

J ai le code suivant qui a partir de un nom de ficher (avec extension) me renvoir
un content-type.

Le probleme est que lorsque j extrais l extension, j ai en retour une string et switch accepte seulement un integer.
J ai essaye de jouer avec un enum mais son succes.

Est ce que quelqu un a une idee de comment resoudre mon probleme?
Mon environment est Linux (si ca peut etre utile)

D autre solutions sont aussi la bienvenue

Merci


Cyril
----------------------
#include <stdio.h>
#include <string.h>

enum file_type {
    txt  = 0,c = 0, pl = 0, cc = 0, h = 0,
    gif = 1,
    png = 2,
    jpg = 3,jpeg = 3, jpe = 3  
};
char *get_content_type(char *file) {
    int i;
    int size = strlen(file);
    char *type;
    for (i=size;i!=0;i--) {
        if (file[i] == '.' )  break;
    }
    char *ext = &file[i+1];
    switch(ext) {
    case 0:
        type = "text/plain";
        break;
    case 1:
        type = "image/gif";
        break;
    case 2:
        type = "image/x-png";
        break;
    case 3:
        type = "image/jpeg";
        break;
    default:
        type = "text/html";
        break;
    }
    return type;
}
   
int main() {
    char *str = "hello.html";
    char *type = get_content_type(str);
    printf("%s\n",type);
    return 0;
}
vendredi 9 février 2007 à 10:37:04 | Re : utiliser une string avec switch/case

buno

Administrateur CodeS-SourceS
Salut Cyril,
Malheureusement pour toi, il n'est pas possible de faire un switch sur une string. Te voilà obligé d'avoir des conditions if en cascade...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
vendredi 9 février 2007 à 10:43:08 | Re : utiliser une string avec switch/case

turnerom

Quel est l'interet de ton enum si tu switch avec les valeurs numériques ???
De plus le switch d'un char* te donnera n'importe quoi.

Fait des strncmp plutot qu'un switch. C'est moin joli c'est sur, mais dans ton cas (cad pas en C++), je ne vois pas comment faire autrement


TuRn3r
vendredi 9 février 2007 à 11:20:34 | Re : utiliser une string avec switch/case

potimarara

Salut

J ai trouver ca sur le www:
http://atty.skr.jp/WebSVN/filedetails.php?repname=mplayer-w100&path=%2Ftrunk%2Flibmpdemux%2Fnetwork.c&sc=1

Je pense que la solution serait de faire comme la structure "mime_struct_t mime_type_table[]" du lien ci dessus.

Merci a tous

Cyril
vendredi 9 février 2007 à 14:02:25 | Re : utiliser une string avec switch/case

buno

Administrateur CodeS-SourceS
Tu peux faire une map qui a comme clé ton extension de fichier et comme valeur ton mime-type:

// Déclaration
map<string, string> MapOfMime;

// Initialisation
MapOfMime["gif"]="image/gif";
....

Recherche du mime-type avec la fonction find(). Plus d'info sur MSDN


Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage


Cette discussion est classée dans : file, type, case, break, char


Répondre à ce message

Sujets en rapport avec ce message

Petit problem avec switch [ par Darkneon ] Salut, Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.J'ai le codde suivant.#include &l help me !!! [ par pascal13 ] j arrive pas a compiler mon programme...je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier toutes remarques seront le erreur a l'execution [ par vangeurmasker ] J'ai créé un projet sous VC++ 6 pour faire une calcullette qui annalyse une chaine entrée. Lors de la compilation je n'ai aucune erreur. C'est a l'exe hook clavier [ par deck_bsd ] Yop,Bon dernière question de la journée :p enfin j'espère. Et la je sèche vraiment. En claire, je fait un keylogger, pour se faire un hook clavier s'i client irc [ par tagboys ] bon j'ai trouver une source sur ce site ces un socket bot j'aimerait y rajouter quelque commands .la seul chose qu'il a ces le pong reply .j'aimerait Problème avec cin.getline() [ par monstor_rox ] Bonjour a tousJ'ai un gros problème sur le code suivant : char* menu() {    cout    cout    cout<<"[3] -  Ajouter Struct avec fonctions [ par Tybrenn ] Je suis débutant en c++. J'essaie de faire un prog. qui permet de maintenir l'inventaire d'un cellier. J'utilise une struct contenant l'info de chaque C : Problème d'indirection de fichier [ par MasterShadows ] Bonsoir à tous,alors dans le cadre de mon projet de C (on va appeler ça une série TV thèque), qui doit être fait en mode console, l'utilisateur doit p Quelle est la faute dans ce code de language c? [ par krolis ] bon voilà mon code( désolée je n'ai pas le temps de lire le réglement, donc excusez-moi si j'écris qielque chose de pas bien)#include #include int mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales