[C avancé]

Résolu
Bonjour à tous,
j'aimerais effectuer un traitement sur une chaîne de caractères en C mais je pense que ca risque d'être compliqué (enfin pour moi quoi)
j'ai une chaine de caractère qui contient une date de cette forme :
08-JAN-99

j'aimerais la transformer pour avoir ceci :
99-01-08

En php/javascript j'aurais utilisé les expressions régulières, j'ai vu qu'en C c'était possible mais qu'il fallait rajouter une bibliothèque.
Auriez-vous une idée du comment faire ?

Merci à vous.
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. Bonjour,

    J'ai trouvé un tuto pas mal ici, ça t'explique quelle bibliothèque rajouter pour pouvoir utiliser les expressions régulières en C ainsi que comment utiliser cette bibliothèque.

    En espérant que ça t'aide.
    0
    1. ouais merci, j'avais déjà jeté un coup d'oeil mais j'espérais qu'il y aurait une solution sans rajouter une lib, mais je vois pas trop comment faire à part en faisant des extractions des test et des recopies mais ca me parait bien lourd.
      0
      1. Re,

        En effet, la gestion des chaine de caractères en C c'est une vrai galère, je te l'acorde ^^

        Sinon si tu veux une piste :
        Ta chaine de caractère peut être considérée comme un tableau, tu peux jouer là dessus.
        - les deux première case tu as ton jour, tu le stocke
        - les caractères 4 à 6, c'est ton mois, tu le stocke aussi et tu fais une fonction pour transformer ton mois de trois lettre en "chiffre" ( JAN -> 01 )
        - les caractère 8 et 9, c'est ton année tu la stocke
        - après tu concatène tout ça dans une dernière variable pour avoir ta date au format souhaité

        Voila mais après c'est peut être un peu lourd en effet.
        0
        1. Ouais, c'était dans mon idée.
          Merci beaucoup pour ton aide, je vais regarder ça puis je verrai ce qui est le plus avantageux dans mon cas
          0
          1. et si tu te servais de l'enumeration et pour deplacer les characteres des simples operateurs binaires.
            facilement trouvable sur developpez

            enum mois{jan,fev,mar,...};

            date2=(date1&0xFFFF)<<10^....

            ca parai compliker mais ca reste simple et ca n est pas tres lourd

            bon courage a toi
            0
            1. Contributeur
              Salut,

              Voici un bout de code qui devrait marcher.
              A toi de l'adapter.
              #include <stdio.h>
              #include <string.h>
              
              int corresMois(char *mois){
                      if (strcmp(mois,"JAN")) return 1;
                      if (strcmp(mois,"MAR")) return 2;
                      if (strcmp(mois,"AVR")) return 3;
                      //A toi de faire le reste ;)
              }
              
              int main(void){
                      char dateFR[]="08-JAN-99";
                      char dateEN[9];
                      int jour,mois;
                      char chMois[5];
              
                      sscanf(dateFR,"%d-%s",&jour,chMois);
                      mois=corresMois(chMois);
                      sprintf(dateEN,"%c%c-%02d-%02d",dateFR[strlen(dateFR)-2],dateFR[strlen(dateFR)-1],mois,jour)
              ;
                      printf("%s\n",dateEN);
                      return 0;
              }
              
              0
              1. Bon j'ai réussi, merci à vous tous ! j'ai pioché un peu dans les idées de chacun.
                bonne journée et encore merci.
                0