[C avancé]

Résolu
Jeff hardi -  
 Jeff hardi -
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.

7 réponses

Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
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
Jeff hardi
 
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
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
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
Jeff hardi
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vautour
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Jeff hardi
 
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