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
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
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.
Merci mais je vourdai éviter les traitements directement affiché le résultat
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
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%s", toto + 2)
Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%Xs", toto);
Là, tu devrais avoir tout ce dont tu as besoin
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%4s", toto);
Tu peux aussi regarder le man de printf qui est très instructif
EDIT : Grillé par Metalman.
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
Autant pour moi, c'est :
par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%.X", toto);
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%.4", toto);
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);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager