Conversion de type en C...aidez moi!!!
boco
-
johnjohn -
johnjohn -
Bonjour!
j'ai besoin de convertir une variable de type entier en un pointeur sur un char.
par exemple:
int a = 2;
et bin j'ai besoin de
char *v = "2";
y aurait-il une fonction similaire a atoi ou autre?
je cherche un peu partout et je ne trouve pas...
Merci d'avance pour votre precieuse reponse!
j'ai besoin de convertir une variable de type entier en un pointeur sur un char.
par exemple:
int a = 2;
et bin j'ai besoin de
char *v = "2";
y aurait-il une fonction similaire a atoi ou autre?
je cherche un peu partout et je ne trouve pas...
Merci d'avance pour votre precieuse reponse!
A voir également:
- Conversion de type en C...aidez moi!!!
- Clear type - Guide
- Type de ram - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Conversion mb en mo ✓ - Forum Bureautique
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
2 réponses
en gros tu cherce un itoa ...
alors plusieurs solutions, si t'es sur que ton int a n'a qu'un seul chiffre, tu peu tres simplement faire v[0] = a + '0'
sinon ben tu applique a peu pres le meme principe mais avec des modulo et des division au bon endroit.
exemple :
si a = 126
i = 2;
while (a != 0)
{
v[i] = (a % 10) + '0';
--i;
a /= 10;
}
v[2] = '6'
v[1] = '2'
v[0] = '1'
a = 0 donc on stop
tu oublie pas le \0 a la fin de ta chaine de caracter et voila !
alors plusieurs solutions, si t'es sur que ton int a n'a qu'un seul chiffre, tu peu tres simplement faire v[0] = a + '0'
sinon ben tu applique a peu pres le meme principe mais avec des modulo et des division au bon endroit.
exemple :
si a = 126
i = 2;
while (a != 0)
{
v[i] = (a % 10) + '0';
--i;
a /= 10;
}
v[2] = '6'
v[1] = '2'
v[0] = '1'
a = 0 donc on stop
tu oublie pas le \0 a la fin de ta chaine de caracter et voila !
Pas standard, attention à la portabilité ...
Ce que j'aurais écrit:
#include <stdio.h>
#include <stdlib.h>
signed int main()
{
signed int integer; // declaration de l'entier
signed char *char_pointer; // pointeur sur un caractere
integer = 485984121; // affectation de l'entier
char_pointer = calloc(1689, sizeof(signed char)); // allocation de 1689 caracteres
sprintf(char_pointer, "%i", integer); // passe l'entier dans une chaine de caracteres
printf("%s\n", char_pointer); // affiche notre chaine de caracteres
free(char_pointer); // libere le pointeur
system("pause"); // une petite pause pour voir le resultat dans la console ;-)
return EXIT_SUCCESS; // annonce la fin du programme :'-(
}
Ce que j'aurais écrit:
#include <stdio.h>
#include <stdlib.h>
signed int main()
{
signed int integer; // declaration de l'entier
signed char *char_pointer; // pointeur sur un caractere
integer = 485984121; // affectation de l'entier
char_pointer = calloc(1689, sizeof(signed char)); // allocation de 1689 caracteres
sprintf(char_pointer, "%i", integer); // passe l'entier dans une chaine de caracteres
printf("%s\n", char_pointer); // affiche notre chaine de caracteres
free(char_pointer); // libere le pointeur
system("pause"); // une petite pause pour voir le resultat dans la console ;-)
return EXIT_SUCCESS; // annonce la fin du programme :'-(
}
par contre ce qui pourrait être intéressant c'est de calculer la taille
du pointeur avant d'assigner les caractères pour malloquer à la bonne taille.
en fait :
si a = 126
i = 2; //a calculer avec un boucle div 10, donne le nb de caracteres.
do {
v[i--] = (a % 10) + '0';
}
while (a/=10)
Pour la portabilite, je voudrai comprendre ce qui ne vas pas?
Contrairement au fonction du genre printf etc...