[C avancé]

Résolu/Fermé
Jeff hardi - 8 juil. 2008 à 13:52
 Jeff hardi - 8 juil. 2008 à 16:00
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 mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
8 juil. 2008 à 14:04
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
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 mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
8 juil. 2008 à 14:12
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
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
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
8 juil. 2008 à 14:42
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
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