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 :

Afficher sous-chaine printf C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Afficher sous-chaine printf C
    Bonjour à tous,
    je début dans le C. Je voudrais d'une chaine de taille fixe 10 '00000120139' pouvoir afficher avec printf les 4 avants dernier c'est-à-dire '2013'.
    Pour le moment je n'arrive qu'à afficher les 4 premiers caractères.

    Merci par avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Je suis débutant aussi donc il existe peut-être une méthode plus directe que ce que je vais dire...

    J'utiliserais la fonction strcat pour récupérer les derniers caractères puis les afficher ensuite avec printf.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Merci mais je vourdai éviter les traitements directement affiché le résultat

  4. #4
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    En effet, tu vas devoir jouer avec strcpy/strncpy et les indices de déplacement dans ta chaîne : strncpy(str, &(tab[6]), 4)(je n'ai pas testé ma ligne, mais la logique serait quelquechose comme ça...)


    EDIT : à tous hasard, essaye : printf("%4s\n", &(tab[6]));
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Une chaîne de caractère est un pointeur sur un ensemble de caractère terminé par un '\0'.

    Si tu as une chaîne char * toto = "123456";, pour ne pas afficher les deux premiers caractères, tu peux faire :
    Maintenant, tu peux aussi n'afficher que X caractères :
    Par exemple :
    Là, tu devrais avoir tout ce dont tu as besoin
    Tu peux aussi regarder le man de printf qui est très instructif


    EDIT : Grillé par Metalman.

  6. #6
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Maintenant, tu peux aussi n'afficher que X caractères :
    Par exemple :
    le format '%Xs' où X est un entier ne limite pas l'affichage d'une chaîne à X caractères mais uniquement rajoute des espaces pour l'afficher sur X positions si nécessaire. Si la chaîne est plus longue alors la totalité de la chaîne va être affichée.

    Pour afficher les 4 avant-derniers caractères d;une chaîne de 10 caractères sans modifier la chaîne, ni la dupliquer et la tronquer est d'afficher ces caractères caractère par caractère (donc ceux d'indice 5,6,7 et 8) printf("%c%c%c%c", toto[5], toto[6], toto[7], toto[8]);, ou la variante avec un boucle.

    Je suppose que le po voudrait disposer d'une fonction strmid(str,left,right) qui renvoie la sous-chaine de str commençant à l'indice left et se terminant à l'indice right inclus.
    Il faudra l'écrire

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par kwariz Voir le message
    le format '%Xs' où X est un entier ne limite pas l'affichage d'une chaîne à X caractères mais uniquement rajoute des espaces pour l'afficher sur X positions si nécessaire. Si la chaîne est plus longue alors la totalité de la chaîne va être affichée.
    Autant pour moi, c'est :
    par exemple :

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Merci à tous surtout à Neckara.

    Voici ma ligne pour ceux que ca peut aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print('%4.4s',chaine-strlen(chaine)-taille-1);

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

Discussions similaires

  1. lire et afficher une chaine sous nasm
    Par touirik dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 09/03/2012, 01h29
  2. Réponses: 3
    Dernier message: 23/09/2009, 10h45
  3. Extraction de sous-chaine dans une chaine
    Par ma2th dans le forum C
    Réponses: 7
    Dernier message: 07/05/2004, 12h42
  4. Réponses: 10
    Dernier message: 24/02/2004, 12h28
  5. [sous-chaine] Avec strpos ou substring ??
    Par terziann dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 17/07/2003, 15h28

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