1
votes

Obtenir une partie d'un entier en C

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 ...


4 commentaires

snprintf pour obtenir l'entier dans une chaîne et strlen pour vous aider à calculer le "milieu". Ou si vous connaissez le nombre de chiffres, divisez par 10 en boucle plusieurs fois, suivi d'un modulo par 10 .


@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?


3 Réponses :


3
votes

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.


0 commentaires

1
votes

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


0 commentaires

1
votes

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);


0 commentaires