[c] Inverser un integer [Fermé]

Signaler
-
 Marc -
Bonsoir,

Existe t-il une fonction en C, qui inverse un int ? Je m'explique, on a par exemple un int1 = 12345, et on aimerait obtenir int2 = 54321 ...
J'ai trouvé une fonction équivalente en C++, pour des chaînes de carcatères, mais en C que dalle.. donc si qqn pouvait m'éclairer !

Merci d'avance,

2 réponses

Messages postés
488
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
156
Salut,
la seule inversion d'un entier qui soit digne de ce nom mathématiquement
c'est 1/x
la seule inversion qui soit recevable en logique booléenne
c'est " !" en C ou NOT en pascal

ce que tu demandes, c'est inverser les caractères d'une chaine
le genre d'exercices de base de la plupart des cours de langage C

1/ convertir ton integer en chaine :
int mon_entier=54321;
sprintf(chaine,"%d",mon_entier);

2/ inverser l'ordre des caractères de la chaine
int longueur=strlen(chaine);
for (int i=0;  i<(longueur/2); i++)
  { 
  char c=chaine[i];
  chaine[i]=chaine[longueur-i-1];
  chaine[longueur-i-1]=c; 
  }

3/ on remet le résultat dans un integer
sscanf(chaine,"%d",&mon_entier);


attention aussi au 0 qui se comporte comme les autres chiffres,
où 5 sera différent de 05 ou encore de 005, comme quoi appeler ça une inversion est une hérésie


cordialement
Merci pour cette réponse, et encore désolé pour le problème d'appellation :)