97 votes

Comment convertir un caractère en entier en C?

Doublons possibles:
Comment convertir un seul caractère dans un int
Caractère à entier en C

Tout organisme peut-il me dire comment convertir un char en int ?

 char c[]={'1',':','3'};

int i=int(c[0]);

printf("%d",i);
 

Quand j'essaye cela, ça donne 49.

162voto

Paul Tomblin Points 83687

Dans les temps anciens, quand on pouvait supposer que la plupart des ordinateurs utilisaient ASCII, on ne ferait que

 int i = c[0] - '0';
 

Mais en ces jours d'Unicode, ce n'est pas une bonne idée. Ce n'était jamais une bonne idée si votre code devait être exécuté sur un ordinateur non-ASCII.

Edit: Bien que cela ait l'air malicieux, il est évidemment garanti par le standard de fonctionner. Merci @Earwicker.

41voto

Frans Bouma Points 6015

La fonction standard atoi() fera probablement ce que vous voulez.

Un exemple simple en utilisant "atoi":

 #include <unistd.h>

int main(int argc, char *argv[])
{
    int useconds = atoi(argv[1]); 
    usleep(useconds);
}
 

23voto

Mehrdad Afshari Points 204872
 int result = charValue - '0';
 

alors votre code serait:

 printf("%d", i - '0');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X