IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Récupérer une sous-chaine d'une chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer une sous-chaine d'une chaine
    Cela fait des heures que je cherche en vain comment découper une chaine de caractères et en récupérer ses fragments en C..

    Mon code est de récupérer le format de l'heure de la machine puis de le traduire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    char chaine_ctime[26] = {0}; 	// Déclaration & Initialisation du tableau de la chaine globale
    	// On initialise les variables qui servirons a récupérer des morceaux de la chaine_cime
    	char jour[3] = {0}; 
    	char annee[5] = {0}; // On ajoute 1 pour prendre en compte :" "
    	char heure[9] = {0}; // On ajoute 1 pour prendre en compte :" "
                 char *mois = {0};
    	char *jourSemaine = {0};
     
    	// On récupère la chaine de caractères dans une variable
    	time_t t;
                 time(&t);
                 strcpy(chaine_ctime,ctime(&t));
     
                 printf("la date et l'heure au format d'origine ctime() sont : %s \n", chaine_ctime);
    J'obtient un résultat sous cette forme : "NNN MMM jj hh:mm:ss AAAA\n\0"

    J'aimerais récupérer "NNN", puis "MMM" ect.. Pour effectuer une traduction après.

    Merci à ceux qui pourront m'orienté au plus vite.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Pour te répondre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char NNN[4], MMM[4];
    int jj, hh, mm, ss, AAAA;
    sscanf(chaine_ctime, "%s %s %d %d:%d:%d %d", NNN, MMM, &jj, &hh, &mm, &ss, &AAAA);
    Cependant, si tu fais ceci, c'est qu'il y a plein de trucs que t'as pas compris aux fonctions de date et heure du C.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Super, merci pour ton lien, avec quelques bidouillages j'ai déjà un très beau résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	time_t t;
        struct tm * pTime;
     
        t = time(NULL);
        pTime = localtime(&t);
     
    	char  ch[80+1],  fmt[80+1],  * pcloc;
    	struct tm * pdh;  time_t intps;  int nbc;
     
    	intps=time(NULL);  pdh = localtime(&intps);
    	nbc = strftime( ch, 81, "Bienvenue sur cette machine nous sommes le\n %A %d %B %Y", pdh);
    	printf("%s, ", ch);
    	printf("il est %d:%d\n", pTime->tm_hour, pTime->tm_min);
    Cela m'affiche "Bienvenue sur cette machine nous sommes le
    Wednesday 06 January 2010, il est 23:40

    Comment pourrais je faire ce même affichage mais en français? car cela me ramène a mon problème ou je doit découper puis traduire..

    Merci

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Pas besoin de strftime ! Affiche directement les champs de la structure struct tm. La signification de chaque champ est bien commentée dans le lien que je t'ai donné. Il y a même un exemple qui affiche juste l'heure mais tu peux l'améliorer en affichant la valeur des autres champs.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // On recupere le format de la date local dans une variable
    	time_t t;
        struct tm * pTime;
     
        t = time(NULL);
        pTime = localtime(&t);
     
    	char  ch[80+1],  fmt[80+1],  * pcloc;
    	struct tm * pdh;  time_t intps;  int nbc;
     
    	intps=time(NULL);  pdh = localtime(&intps);
     
    	// Format anglais entier
    	printf("Format anglais entier :\n");
    	nbc = strftime(ch, 81, "Bienvenue sur cette machine nous sommes le\n %A %d %B %Y", pdh); // On recupere la date entiere dans un fichier
    	printf("%s, ", ch); // On affiche le fichier
    	printf("il est %d:%d\n\n", pTime->tm_hour, pTime->tm_min); // Affichage de l'heure
     
    	// Format decimal (non-traité)
    	printf("Format decimal (non-traite) :\n");
    	nbc = strftime(ch, 81, "%Y", pdh); // On récupere la date dans un fichier
    	printf("Bienvenue sur cette machine nous sommes le\n %d %d %d %s, il est %d:%d\n", pTime->tm_wday, pTime->tm_mday, pTime->tm_mon, ch, pTime->tm_hour, pTime->tm_min);
    Le format decimal marche niquel, mais la encore toujours le meme problème jarrive pas a récuperer chaques fonctions dans une variable, pour le traitement et afficher ensuite en francais.

    par exemple : prendre "pTime->tm_wday" et dire que quand c'est == à 4, je remplace par "Jeudi". je sais pas si je suis tres clair.
    Merci

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Créer un tableau tab tel que tab[0] = "Dimanche", tab[4] = "Jeudi", etc. ! Pariel pour les mois. Regarde ceci par exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Appeler une sous propriété via une chaine de caractère
    Par chtinis dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/06/2015, 14h48
  2. [RegEx] Remplacement de chaine dans une sous chaine
    Par fpouget dans le forum Langage
    Réponses: 4
    Dernier message: 23/02/2010, 08h49
  3. Récupérer un sous groupe d'une regex
    Par kalash_jako dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 06/11/2006, 21h03
  4. recherche d'une chaine dans une sous chaine
    Par claralavraie dans le forum Oracle
    Réponses: 1
    Dernier message: 31/07/2006, 12h00
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo