Aide langage C

Résolu/Fermé
code001 - 11 déc. 2007 à 11:29
fabienlele Messages postés 4 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 27 décembre 2008 - 26 déc. 2008 à 21:23
SLT,je me quetionne est ce qu'on peut appliquer la commande swhitch avec les chaines de caracteres
bref est ce peut faire


printf("donner votre commande\n");
scanf("%s",com);
switch(com)
{
case "dir":dir(...);break;
case "cd":cov(...);break;
}
sinon donner moi une solution svp

4 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 déc. 2007 à 11:46
houla, je pense pas. pour moi switch fonction qu'avec les entiers ( c.à d. int, long... char et enum).
je te conseil de créer une fonction et des variables.
const char**  commandes={"dir","cd",...,0}
int commande_no(char* c)
{
int i=0;
while(commande[i]!=0)
{if(!strcmp(commande[i],c)) return i;
i++;
}
return -1;//pour l'erreur commande non reconnue
}

Puis pour le switch :
switch(commande_no(com)){case 0:...//commande dir
case1:... etc.

je n'ai pas tester, il y a peut être des erreurs, en particulier sur strcmp, mais c'est l'esprit.
0
mba_pro Messages postés 3 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 11 décembre 2007
11 déc. 2007 à 12:18
merci,c'est une bonne solution,mais je suis tombé ds un autre brobleme
en faite j'essai de faire un programme qui simule les commandes de ms_dos sur les repertoires et fichiers avec l'aide des arbres
mon pbleme que le pgramme comprent par exemples:
c:\cd rep1
j'ai pense de faire une fonction qui se charge de prendre la chaine de caractere apres chaque espace ,je me qustionne est ce qu'il ya une fonction predefinie realisant se travaille,sinon es ce qe tu as une autres solution
0
mba_pro Messages postés 3 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 11 décembre 2007
11 déc. 2007 à 12:24
est ce tu peut m'aider a faire un programme c qui sert simuler les commande de ms_dosr,a l' aide des arbres
avec la structure
struct arbre
{
char type[2];
char date[9];
char ut[11];
char nom[31];
int taille;
struct arbre *pere;
struct arbre *fils;

};typedef struct arbre ARBRE;

ce programme simule en +- MSDOS c.a.d commende login <utilisateur> ,cd <nom,type.....> ,dir...

type :fichier ou repertoire
date :date de creation
ut:utilisateur
nom:nom de rep ou fich
taille de fich

Configuration: Windows XP
Firefox 1.5.0.3
0
mba_pro Messages postés 3 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 11 décembre 2007
11 déc. 2007 à 12:14
merci,c'est une bonne solution,mais je suis tombé ds un autre brobleme
en faite j'essai de faire un programme qui simule les commandes de ms_dos sur les repertoires et fichiers avec l'aide des arbres
mon pbleme que le pgramme comprent par exemples:
c:\cd rep1
j'ai pense de faire une fonction qui se charge de prendre la chaine de caractere apres chaque espace ,je me qustionne est ce qu'il ya une fonction predefinie realisant se travaille,sinon es ce qe tu as une autres solution
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
11 déc. 2007 à 14:28
Houla, je suis nul en liste chainée... Père fils machin, je trouve ça lourd et je m'y perd très vite.
pour les chaines de caractère, il y a pas mal de fonction prédéfini dans les entêtes standard (stdio, stdlib...) sinon, il y a aussi string.h
Vois là : https://en.cppreference.com/w/
C I/O et string, tu devrai trouver ton bonheur.
0
fabienlele Messages postés 4 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 27 décembre 2008
26 déc. 2008 à 21:23
**Apres correction**

Pardon je comprends pas comment j'ai fait ça.
0