web-dev-qa-db-fra.com

Analyse de l'entier dans la chaîne C

Comment analyser un entier vers string(char* || char[]) en C? Existe-t-il un équivalent à la méthode Integer.parseInt(String) de Java en C?

19
Paradius

Si vous souhaitez convertir un entier en chaîne, essayez la fonction snprintf().

Si vous souhaitez convertir une chaîne en entier, essayez la fonction sscanf() ou atoi() ou atol().

47
jpalecek

Pour convertir un int en chaîne:

int x = -5;
char buffer[50];
sprintf( buffer, "%d", x );

Vous pouvez également le faire pour les doubles:

double d = 3.1415;
sprintf( buffer, "%f", d );

Pour convertir une chaîne en entier:

int x = atoi("-43");

Voir http://www.acm.uiuc.edu/webmonkeys/book/c_guide/ pour la documentation de ces fonctions.

15
Colin

Il semble que vous ayez une chaîne et que vous souhaitiez la convertir en entier, à en juger par la mention de parseInt, mais ce n'est pas tout à fait clair à la question ...

Pour ce faire, utilisez strtol. Cette fonction est légèrement plus compliquée que atoi, mais en retour, elle fournit une indication plus claire des conditions d'erreur, car elle peut remplir un pointeur (que l'appelant fournit) avec l'adresse du premier caractère qui l'a confondu. . L'appelant peut alors examiner le caractère incriminé et décider si la chaîne était valide ou non. atoi, en revanche, ne renvoie que 0 s'il s'est perdu, ce qui n'est pas toujours utile - bien que si vous êtes satisfait de ce comportement, vous pourriez aussi bien l'utiliser.

Un exemple d'utilisation de strtol suit. La vérification de l'erreur est très simple: si le premier caractère non reconnu n'était pas le '\x0' qui termine la chaîne, la chaîne est alors considérée comme ne contenant pas un entier valide.

int ParseInt(const char *s,int *i)
{
    char *ep;
    long l;

    l=strtol(s,&ep,0);

    if(*ep!=0)
        return 0;

    *i=(int)l;
    return 1;
 }

Cette fonction remplit * i avec l'entier et retourne 1, si la chaîne contenait un entier valide. Sinon, il renvoie 0.

10
please delete me

C'est discuté dans la FAQ C de Steve Summit.

2
vinc456

La fonction Java parseInt() analyse une chaîne pour renvoyer un entier. Une fonction C équivalente est atoi(). Cependant, cela ne semble pas correspondre à la première partie de votre question. Voulez-vous convertir un entier en une chaîne ou une chaîne en un entier?

1
Greg Hewgill

Vous pouvez également consulter la fonction atoi() (ascii en entier) et ses parents, atol et atoll, etc.

Il existe également des fonctions qui font l'inverse, à savoir itoa() et co.

1
Matthew Scharley

Vous voudrez peut-être jeter un œil à la solution compatible sur ce site .

0
anon

Tu peux essayer:

int intval;
String stringval;
//assign a value to intval here.
stringval = String(intval);

cela devrait faire l'affaire.

0
SuperKael