web-dev-qa-db-fra.com

Comment convertir un caractère en entier en C?

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

Quelqu'un peut-il me dire comment convertir une char en int?

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

int i=int(c[0]);

printf("%d",i);

Quand j'essaye ça, ça donne 49.

90
Cute

Autrefois, quand on pouvait supposer que la plupart des ordinateurs utilisaient du code ASCII, on ne faisait 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 hack, il est évident que est garanti par la norme de fonctionner Merci @Earwicker.

152
Paul Tomblin

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);
}
37
Frans Bouma