Aide langage C

Résolu
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
Configuration: Windows XP
Firefox 1.5.0.3

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. **Apres correction**

    Pardon je comprends pas comment j'ai fait ça.
    1. Contributeur
      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.
      1. 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
        1. Contributeur
          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.
          1. 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
          2. 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