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 :

question sur les chaine de caractere en c


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut question sur les chaine de caractere en c
    je suis un debuton en c et rencontre un probleme dans un tp:
    utilisateur entre un chaine de cette format jour-mois-annee et moi je doit l'afficher de cette format mois-jour-annee.
    j'ai besoin de connaitre l'equivalent de substring en c pour pouvoir extraire le mois, jour et annee.
    si vous avez un autre solution, proposer le à moi svp.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Utilise par exemple strtok pour couper ta chaîne en trois morceaux.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Pas le choix, tu dois splitter ta chaîne avec la fonction donnée par diogene puis la reconstruire par exemple avec sprintf sur un nouvel emplacement. Je te conseil par ailleurs de travailler sur une copie de ta chaîne si tu utilises strtok car elle modifie la chaîne passée en argument !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 136
    Points
    136
    Par défaut
    printf ou sprintf pour ce que tu demandes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned char d[11]; /* jj-mm-aaaa */
    unsigned char dateOut[11]; /* mm-jj-aaaa */
     
    d="05-11-2007";
     
    printf("%.2s-%.2s-%.4s",d+3,d,d+6); /* affichage uniquement */
     
    sprintf(dateOut,"%.2s-%.2s-%.4s",d+3,d,d+6); /* reformatage dans dateOut */

  5. #5
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Et un truc comme ça ça n'irait pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /* En prenant comme format de date : jj/mm/aa */
    void afficheDate (const char chaine[])
    {
       putchar (chaine[3]);
       putchar (chaine[4]);
       putchar ('/');
       putchar (chaine[0]);
       putchar (chaine[1]);
       putchar ('/');
       putchar (chaine[6]);
       putchar (chaine[7]);
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 117
    Points : 113
    Points
    113
    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
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
     
    int main(void)
    {
        int i;
        int a,m,j;
        char date[11],date2[11];
     
        fgets(date,11,stdin); /*purger l'entree et verifier que la saisie est conforme*/
        for(i=0; (unsigned)i<strlen(date); i++)
            if (!isdigit(date[i])) date[i]=' ';
        sscanf(date,"%d%d%d",&j,&m,&a);
        printf("%2d/%2d/%4d\n",m,j,a); /*affichage seulement*/
        sprintf(date2,"%2d/%2d/%4d\n",m,j,a); /*ecriture dans une chaine de caracteres*/
        printf("%s\n",date2);
     
        return 0;
    }

  7. #7
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par rebel64 Voir le message
    printf ou sprintf pour ce que tu demandes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned char d[11]; /* jj-mm-aaaa */
    unsigned char dateOut[11]; /* mm-jj-aaaa */
     
    d="05-11-2007";
     
    printf("%.2s-%.2s-%.4s",d+3,d,d+6); /* affichage uniquement */
     
    sprintf(dateOut,"%.2s-%.2s-%.4s",d+3,d,d+6); /* reformatage dans dateOut */
    Attention aux exemples de code envoyés :
    Ce code est incorrect: d est un tableau et il est impossible d'écrire d=
    Cette méthode peut marcher si on est certain du format 2/2/4 de la date.

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Le mieux aurait été de lui expliquer la voie à suivre sans exemple comme on l'a fait au début, c'est mieux pour l'apprentissage

Discussions similaires

  1. question sur les chaine de caractères
    Par amy0o0 dans le forum C
    Réponses: 11
    Dernier message: 14/10/2006, 15h14
  2. Réponses: 8
    Dernier message: 04/08/2006, 16h24
  3. question sur les chaines de caractères
    Par pierrOPSG dans le forum C
    Réponses: 5
    Dernier message: 13/04/2006, 19h55
  4. probleme sur les chaines de caractere
    Par foufi5 dans le forum C
    Réponses: 8
    Dernier message: 22/12/2005, 16h30
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 20h01

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