Comment convertir un entier en char sans librairie C?

Dans l’exercice de programmation en courant alternatif, on me demande de convertir un int en caractère sans utiliser la bibliothèque C.

Une idée de comment s’y prendre?

edit: ce que je veux dire par int est le type construit en C / C ++

Merci.

Le jeter?

char c = (char)i; 

Ou peut-être que tu voulais dire ça?

 char c = (char)('0' + i); 

Je suis sûr que ce n’est pas ce que vous voulez dire cependant … Je suppose que vous voulez créer une chaîne (char array)? Si tel est le cas, vous devez le convertir un chiffre à la fois en commençant par le chiffre le moins significatif. Vous pouvez le faire de manière récursive, en pseudo-code:

 function convertToSsortingng(i) if i < 10 return convertDigitToChar(i) else return convertDigitToString(i / 10) concat convertDigitToChar(i % 10) 

Ici / est la division entière et % est le modulo entier. Vous devez également gérer les nombres négatifs. Cela peut être fait en vérifiant d’abord si vous avez un nombre négatif, en appelant la fonction sur la valeur absolue et en ajoutant le signe moins si nécessaire.

En performance, vous implémenterez probablement ceci avec une boucle au lieu d'utiliser la récursion et en modifiant directement le contenu d'un tableau de caractères au lieu de concaténer des chaînes.

Si vous voulez vraiment une chaîne:

 #include  char *tochar(int i, char *p) { if (i / 10 == 0) { // No more digits. *p++ = i + '0'; *p = '\0'; return p; } p = tochar(i / 10, p); *p++ = i % 10 + '0'; *p = '\0'; return p; } int main() { int i = 123456; char buffer[100]; tochar(i, buffer); printf("i = %s\n", buffer); } 

Pour être complet, si la tâche consiste à convertir int en chaîne en tant que suspects anthares, vous pouvez utiliser la deuxième réponse de Mark pour convertir chaque chiffre de l’entier. Pour obtenir chaque chiffre, vous devez vous pencher sur les opérateurs de division et modulo.