Extraire deux chiffres d'un un nombre
Résolu
Bonjour,
je suis juste debutant en c/c++. je veux un coup de pouce svp.
je voudrais ecrire une fonction qui prend en parametre un int de 6 chiffre par ex(123786) et me renvoi les deux du milieu. ie 37 pour mon exemple.
quelqun peut il maider ?
jen serai reconnaissant
plus precisement je veux pouvoir lire une date sous cette forme par exemple 010209 (1er fev 2009)
et y extraire le mois, le recuprer dans un int
merci d'avance
je suis juste debutant en c/c++. je veux un coup de pouce svp.
je voudrais ecrire une fonction qui prend en parametre un int de 6 chiffre par ex(123786) et me renvoi les deux du milieu. ie 37 pour mon exemple.
quelqun peut il maider ?
jen serai reconnaissant
plus precisement je veux pouvoir lire une date sous cette forme par exemple 010209 (1er fev 2009)
et y extraire le mois, le recuprer dans un int
merci d'avance
A voir également:
- Extraire deux chiffres d'un un nombre
- Nombre de jours entre deux dates excel - Guide
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Deux whatsapp sur un téléphone - Guide
- Extraire image d'un pdf - Guide
3 réponses
Le plus simple c'est de l'écrire dans un buffer avec un sprintf et de récupérer les morceaux qui t'intéressent.
Pour plus de détails cherche dans google :
Bonne chance
#include <stdlib.h> #include <string.h> #include <stdio.h> int main(){ int x = 123456,y; char buffer[7]; // contiendra "123456\0" char buffer2[3]; // contiendra "34\0" sprintf(buffer,"%i",x); if(strlen(buffer) == 6){ strncpy(buffer2,buffer + 2 ,2); // copie buffer[2] et buffer[3] dans buffer2 buffer2[2] = '\0'; y = atoi(buffer2); printf("y = %d\n",y); } return 0; }
Pour plus de détails cherche dans google :
man sprintf man strlen man strncpy man atoi
Bonne chance
Parce que le atoi converti la chaîne "03" en une valeur numérique (donc 3). Si tu veux vraiment la sous chaîne elle est dans buffer2 et là, le 0 apparaîtra (mais contrairement à y ce sera une chaîne et pas une valeur numérique) et dans ce cas là les deux dernières instructions (atoi, printf) de la boucle ne servent pas, il suffit de faire :
Autre possibilité, tu gardes le code actuel et tu fais un :
(où truc dans le genre). Pour plus de détails :
(dans google ou dans une console linux)
Bonne chance
printf("%s\n",buffer2);
Autre possibilité, tu gardes le code actuel et tu fais un :
printf("%02d\n",y);
(où truc dans le genre). Pour plus de détails :
man printf
(dans google ou dans une console linux)
Bonne chance
mais jaimerai comprendre quelque chose
si je donne la valeur x 120309, alors ca affiche y =3;
pour la valeur 121007 ca affiche bien y=10;
pourquoi le 0 nest pa considere dans le premier cas?
et si je voulais absolument le recuper? ie 03?
peut etre que ma preocupation est bete?
merci encore