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 :

copier les 2 derniers caractères d'une chaine


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 128
    Points : 122
    Points
    122
    Par défaut copier les 2 derniers caractères d'une chaine
    Bonjour à tous.
    J'essaie de ne copier que les 2 derniers caractères d'une chaine, mais je n'y arrive pas.

    C'est pour faire fonctionner la fonction suivante :

    FormatDateToMMDDYY( dateChar, jourInt, moisInt, anneeInt )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void FormatDateToMMDDYY( char* modyyr, int da, int mo, int ye )
    {
    	// en entrée, on a une année au format yyyy, en sortie mmjjaa
    	char tmpStr[4], tmpStr2[3];
    	sprintf(tmpStr, "%d", ye);
    	sprintf(tmpStr2, "%c%c", tmpStr[2], tmpStr[3]);
    	sprintf(modyyr, "%d/%d/%s", mo, da, tmpStr2);
    }
    "modyyr" prend bien la bonne valeur, mais sur l'accolade fermante, le compilateur déclenche l'erreur suivante :
    Run-Time Check Failure #2 - Stack around the variable 'tmpStr' was corrupted.
    D'où vient l'erreur ? Comment procéder plus proprement ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Bonsoir,

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	char tmpStr[4], tmpStr2[3];
    	sprintf(tmpStr, "%d", ye);

    Même avec une année « ye » comprise entre 1000 et 9999, ceci n'écrira pas quatre mais cinq caractères : il faut tenir compte du '\0' final qui clôture la chaîne. Celui-ci va donc être écrit en dehors de ton tableau et écraser ce qui se trouve à côté. En plus, tu sembles en tenir compte dans tmpStr2.

    De toutes façons, il y a plus simple :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void FormatDateToMMDDYY( char* modyyr, int da, int mo, int ye )
    {
        sprintf (modyyr,"%d/%d/%02d",mo,da,ye % 100);
    }

    Bon courage.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 128
    Points : 122
    Points
    122
    Par défaut
    Bonjour Obsidian.

    Citation Envoyé par Obsidian Voir le message
    Même avec une année « ye » comprise entre 1000 et 9999, ceci n'écrira pas quatre mais cinq caractères : il faut tenir compte du '\0' final qui clôture la chaîne. Celui-ci va donc être écrit en dehors de ton tableau et écraser ce qui se trouve à côté. En plus, tu sembles en tenir compte dans tmpStr2.


    Citation Envoyé par Obsidian Voir le message
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void FormatDateToMMDDYY( char* modyyr, int da, int mo, int ye )
    {
        sprintf (modyyr,"%d/%d/%02d",mo,da,ye % 100);
    }
    Merci, parfait.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2014, 12h47
  2. Réponses: 11
    Dernier message: 05/12/2008, 10h31
  3. Supprimer les 4 derniers caractères d'une chaine
    Par orditosh dans le forum WinDev
    Réponses: 4
    Dernier message: 28/06/2008, 12h40
  4. lire les 3 dernier caractère d'une chaine
    Par kanzarih dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 15/05/2008, 15h25
  5. [Tableaux] Suppresion du dernier caractère d'une chaine
    Par GarGamel55 dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2006, 22h27

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