[C] cast int => char[]

Résolu/Fermé
Dren - 3 janv. 2005 à 19:29
 Dren - 3 janv. 2005 à 22:30
Quelqu'un saurait-il comment transtyper un entier en une chaine de charactère ?
Disons que j'ai :

int var1 = 456;

y'a-t'il une façon de transformer ça en une chaine de charactère qui contienne 456 ?

Je sais pas si c'est très clair donc si c'est incompéhenssible dites moi.

Merci.
A voir également:

6 réponses

Oulà, j'ai oublié de préciser mais je suis un total débutant en programmation alors là je commence à avoir de la peine à suivre.

En fait pour le modulo, si j'ai bien compris ça va pas marcher parce que je sais pas du tout la valeur de x, y et z vu qu'elles changent tout le temps.
Pour ton site et le string.h j'ai trouvé des fonctions pour passer d'une string à un nombre mais pas pour le contraire.

Alors je vais aller m'instruire sur les masque binaires et voir si je peux en tirer quelque chose.

Merci beaucoup pour ton aide.
A+
Dren
2
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
3 janv. 2005 à 20:45
Salut,
Tu as les fonctions sprintf et snprintf que tu peux utiliser comme ceci:
  int main(void)
{
  unsigned short int x = 14567;  
  unsigned short int y = 45678;
  unsigned int z = x * y;
  char chaine[20];
  sprintf(chaine, "%d", z);
  printf("%s\n", chaine);
}


A++

C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
2
grdscarabee Messages postés 134 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 7 août 2005 74
3 janv. 2005 à 19:34
Salut,

Je ne sais pas si j'ai très bien compris ce que tu veux, mais si tu veux par exemple afficher le nombre à l'écran, tu dois utiliser printf("%d",456) (%d spécifie qu'il attend un nombre décimal)...par contre si tu veux juste transformer le nombre en char*, je ne sais pas trop.

J'utiliserai bien les stream, mais j'ai peur que ce ne soit disponible qu'en C++....Sinon tu fais de la conversion en ASCII

GrdScarabe

Learn with the best, teach the others
1
Bon alors j'explique un peu mieux.
Disons que je veux faire une multiplication et ensuite comparer les trois dernier chiffre du nombre obtenu avec une autre varriable.
Donc j'ai quelque chose comme ça :

unsigned short int x = 14567;
unsigned short int y = 45678;
unsigned int z = x * y;

et maintenant je veux transformer z en chaine de charactère pour pouvoir le manipuler.

Y'a-t-il une fonction pour ça ?

Merci d'avance et j'avais oublié alors BONNE ANNEE !!!
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ouiii, c'est exactement ce que je cherchais !!!
Merci Ravachol, c'est vraiment simpa.
Merci également pour ton aide grdscarabee.

Je viens de trouvé un truc mais c'est beaucoup plus long et c'est en C++ mais je le met quand même si ça peut aider qqun.


#include <iostream>
#include <sstream>
#include <string>

using namespace std;

unsigned short int x = 14567;
unsigned short int y = 45678;
unsigned int z = x * y;
ostringstream chaine1;
string chaine2;

chaine1 << z;
chaine2 = chaine1.str();
cout << chaine2 << endl;


Bon, j'espère que j'ai pas fait trop de fautes.

A+ et bonne année !!!

Dren
1
grdscarabee Messages postés 134 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 7 août 2005 74
3 janv. 2005 à 19:57
Re,

Alors je ne comprends pas trop ce que tu veux faire de ta chaine de caractere....tu ferais mieux d'utiliser le modulo si tu veux juste faire joujou avec les trois derniers chiffres (operateur %) ou alors si tu veux quelque chose de plus fin amuses toi à faire un masque binaire....la conversion en string va te poser plus de problèmes que tu ne le penses, rien qu'au niveau de la sécurité !

Mais si tu veux réellement convertir ton nombre en chaine, recherches dans le fichier string.h les fonctions disponibles, ou regardes sur www.cppreference.com

GrdScarabe

Learn with the best, teach the others
0