Problème sur une fonction C++ de base... - Programmation
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--
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
Marsh Posté le 03-02-2001 à 22:54:18
je suis d'accird avec oh_damned le char * chaine [11] est strange
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
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
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"
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.
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