Problème sur une fonction C++ de base...

Problème sur une fonction C++ de base... - Programmation

Marsh Posté le 03-02-2001 à 16:36:28    

Salut
J'ai une fonction permettant de transformer un entier en chaine de caratère à faire. Voici le prototype :
void EntVersCh(char *, int)
 
J'ai bien essayé, j'arrive à extraire chaque chiffre du nombre mais j'ai un problème de pointeur :
 
#include <iostream.h>
#include <string.h>
ss
void EntVersCh(char *chaine[11],int nb){
 int div=1000000000,i,digit;
 for(i=0;i<10;i++){
ssdigit=nb/div;
sscout<<digit<<endl;
ssstrcpy(chaine[i],(char *)digit);ss
ssssssss// c'est la que ça va pas pour convertir digit en *char
ssnb=nb-digit*div;
ssdiv=div/10;
 }
}
 
void main(){
 char *chaine[11];
 int nb;
 cin>>nb;
 EntVersCh(chaine,nb);
 cout<<chaine;
}
 
 
Merci pour l'aide

Reply

Marsh Posté le 03-02-2001 à 16:36:28   

Reply

Marsh Posté le 03-02-2001 à 19:06:17    

strcpy(chaine[i],(char *)digit);  
 
un char* est un pointeur c'est donc une adresse, en faisant comme ça tu dis que cette adresse sera la valeur de digit entre 0 et 9
 
strcpy(chaine[i],(char *)&digit);  en ajoutant & ca devrais marcher
 
par contre je ne comprends pas très bien ta façon de faire...

 

--Message édité par eristoff--

Reply

Marsh Posté le 03-02-2001 à 19:40:47    

cette écriture me paraît fausse :
char *chaine[11]
 
d'après ce que tu écrit chaine est un tableau de 11 pointeurs sur des char tandis que tu veux juste une chaine (c-à-d un tableau de caractères), alors si tu veux une chaine tu écrit : char *
 
de plus le code ascii de 0 est 48 celui de 1, 49 ...
donc il te suffit d'écrire une fois que tu as digit :
chaine[i] = digit + 48;ss
en déclarant digit char dès le départ

Reply

Marsh Posté le 03-02-2001 à 22:54:18    

je suis d'accird avec oh_damned le char * chaine [11] est strange


---------------
http://www.chadenat.forez.com
Reply

Marsh Posté le 03-02-2001 à 23:28:56    

Utiliser des char * en c++ est de toute façon bizarre alors qu'il y a les classes string et strstream :)

Reply

Marsh Posté le 04-02-2001 à 00:33:05    

Verdoux a écrit a écrit :

Utiliser des char * en c++ est de toute façon bizarre alors qu'il y a les classes string et strstream :)

 





Si tu le dis, le problème c'est qu'on vient juste de commencer les classes. En tout cas merci, je vais essayer

Reply

Marsh Posté le 04-02-2001 à 17:30:45    

la fonction sprintf(char *szBuf,const char *format,[args ...]) fait ca tres bien, pourquoi réécrire une fonction qui le fait déjà ?
 
exemple :
int entier = 2;
char chaine[20];
sprintf(chaine,"%d,entier);
 
 
chaine sera egal à "2"

Reply

Marsh Posté le 04-02-2001 à 18:25:44    

C'est clair c'est super sprintf() j'm'en sert partout.
il y a aussi atoi() pour faire l'inverse.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed