Je viens de python et il était facile d'obtenir le chiffre du milieu d'un entier, par exemple, à partir de 897 Je veux le 9:
>>> num = 897 >>> num2 = int(str(num)[1]) >>> num2 9
Mais comment puis-je faire cela sur C? C'est tellement difficile à convertir en chaîne ...
3 Réponses :
Obtenir un seul chiffre comme int
peut être fait mathématiquement:
int num = 897; int dig1 = (num / 1 ) % 10; int dig2 = (num / 10 ) % 10; int dig3 = (num / 100 ) % 10;
La division par un sur la première ligne est uniquement à titre d'illustration du concept: vous divisez par n-ième puissance de dix, commençant par 10 0 = 1.
Vous pouvez essayer l'opérateur de module (%).
Dans votre cas
while(num>0) { digit = num%10; num/=10; }
Faites ceci en utilisant une boucle while aussi longtemps que vous le souhaitez. EG.
num = 897 lastDigit = num%10; // Which returns 7 lastDigit/= 10; secondLastDigit = lastDigit%10; //Which returns 9
L'approximation la plus proche en C du fragment Python donné, et de son opérateur str
, est sprintf
/ snprintf
:
snprintf(numstr, sizeof(numstr), "%d", num);
snprintf
pour obtenir l'entier dans une chaîne etstrlen
pour vous aider à calculer le "milieu". Ou si vous connaissez le nombre de chiffres, divisez par10
en boucle plusieurs fois, suivi d'un modulo par10
.@Gianla La formule que vous avez affichée n'extrait pas le chiffre du milieu pour un nombre arbitraire. :)
Double possible de Conversion d'un entier en chaîne en C
@Gianla Au fait, quel est le chiffre du milieu d'un nombre qui contient deux chiffres?