2016-12-09 4 views
0

Je souhaite convertir un nombre entier d'une chaîne du type:Fonction opposée à atoi()?

int a = 12345 

caudales à

char b[6] = "12345" 

essentiellement l'inverse de la fonction atoi qui convertit une chaîne de caractères à un nombre entier.

+0

sprintf() avec '% d'? – bwoebi

+0

'char b [5]' -> 'char b [6]' ou plus – BLUEPIXY

+0

'char * t = s + sizeof (s); * - t = 0; fais {* - t = (n% 10) + '0'; n/= 10; } while (n); '(ajouter un test pour les négatifs) le numéro de chaîne est à' t'. –

Répondre

3
#include <stdio.h> 
int sprintf(char *str, const char *format, ...); 

Exemple

char str[10]; 
sprintf(str,"%d", 12345); 
+0

Merci pour la signature mais comment l'utilisez-vous? ? –

+0

char str [10]; sprintf (str, "% d", 12345); – vonzhou

-2

Utilisez itoa(). Cela devrait faire l'affaire (Seuls certains compilateurs l'ont)

+2

Non standard ... –

+0

@ ring, que voulez-vous dire? – Heatblast016

+0

[C'est ce que je veux dire] (http://stackoverflow.com/questions/8257714/how-to-convert-an-int-to-string-in-c) –

2

source:. Here

char * itoa (valeur int, char * str, base int

Convertir l'entier en chaîne (fonction non standard) Convertit une valeur entière en Chaîne à terminaison nulle utilisant la base spécifiée et stocke le résultat dans le tableau donné par le paramètre str.

Si la base est 10 et que la valeur est négative, la chaîne résultante est précédée de avec un signe moins (-). Avec toute autre base, la valeur est toujours considérée comme non signée.

str doit être un tableau assez long pour contenir toute valeur possible: (sizeof (int) * 8 + 1) pour radix = 2, à savoir 17 octets dans les plates-formes et 33 dans les plates-formes 32 bits 16 bits.

mais ne sont pas définies dans la norme ANSI-C et ne fait pas partie de C++

Une alternative conforme aux normes pour certains cas peut être sprintf:

  • sprintf (str, "% d" , valeur) convertit en base décimale.