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 :

Les chaînes de caractères en C


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 151
    Par défaut Les chaînes de caractères en C
    Bonjour,

    J'aimerai savoir si j'ai une possibilité pour ajouter des zéros à gauche au chaîne.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int n =3;
    char res[n]="11";
    //ajouter des 0 à gauche si la langueur de res !=n
    longueurRes = strlen(res);
    if (longueurRes==n)
    {printf("%s\n", res);  }
    else 
    {//ajouter des 0 à gauche, res elle doit égale à "011"}
    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 761
    Par défaut
    Oui mais ton algo n'est pas le bon

    En gros, et en algo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        int nb_zeros = (max_len - substr_len);
     
    //  Bourrage à gauche  
        Pour index de 0 à nb_zeros exclus, str[index] = '0';
     
    //  Recopie de ta sous-chaîne
        memcpy à partir str_len de substr

  3. #3
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #include <stdio.h>
    #include <string.h>
     
    static const size_t cTAILLE_BUFFER          = 10;
    static const size_t cNB_MINIMAL_DE_CHIFFRES = 3;
     
    int main(void) {
        // Avec %03d, (sn)printf écrit au moins 3 chiffres et ajoute si besoin des '0' à gauche :
        const int entier = 11;
        {
            // Écriture dans la sortie standard
            printf("%03d\n", entier);
     
            // Écriture dans un buffer
            char buffer[cTAILLE_BUFFER];
            snprintf(buffer, cTAILLE_BUFFER, "%03d", entier);
     
            // test
            printf("%s\n", buffer);
        }
     
        // Avec une chaîne, la seule méthode que je connais est d'ajouter les '0' soi-même :
        const char chaine[3] = "11";
        const size_t longueur_chaine = strlen(chaine);
        {
            // Écriture dans la sortie standard
            for(size_t k = longueur_chaine; k < cNB_MINIMAL_DE_CHIFFRES; ++k)
                printf("0");
            printf("%s\n", chaine);
     
            // Écriture dans un buffer
            char buffer[cTAILLE_BUFFER];
            char* bufferPtr = buffer;
            for(
            	size_t k = longueur_chaine;
            	k < cNB_MINIMAL_DE_CHIFFRES && bufferPtr+1 < buffer+cTAILLE_BUFFER;
            	++k, ++bufferPtr)
            {
            	*bufferPtr = '0';
            }
            const size_t nb_zeros_ecrits = bufferPtr - buffer;
            snprintf(bufferPtr, cTAILLE_BUFFER-nb_zeros_ecrits, "%s", chaine);
     
            // test
            printf("%s\n", buffer);
        }
        return 0;
    }
    Documentation de printf et de snprintf :
    http://en.cppreference.com/w/c/io/fprintf

Discussions similaires

  1. Les chaînes de caractères.
    Par AsmCode dans le forum C
    Réponses: 5
    Dernier message: 13/03/2007, 11h38
  2. [MySQL] fonctions qui convertit les chaînes de caractères en entier
    Par poyoland dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 11h36
  3. MFC + Manipuler les chaînes de caractères
    Par mqsi dans le forum MFC
    Réponses: 2
    Dernier message: 15/11/2006, 16h24
  4. Réponses: 6
    Dernier message: 08/08/2006, 09h14

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