bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
merci
Vincent
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
merci
Vincent
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
merci
Vincent
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une
méthode qui veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une
méthode qui veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une
méthode qui veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Le mercredi 6 juillet 2005 à 22:06, Vincent a écrit dans
fr.comp.lang.c++ :bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Un passage de paramètre le fait systématiquement.
void ma_fonction(char *p)
{
strcpy(p,"Test");
}
...
char toto[300];
ma_fonction(toto); // passe l'adresse du tableau
cout << toto ; // contenu de toto modifié par ma_fonctionComment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
Il faut que toto pointe sur quelque chose avant d'entrer dans la
fonction, puisque la fonction ne pourra pas rendre une valeur modifiée.
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
Le mercredi 6 juillet 2005 à 22:06, Vincent a écrit dans
fr.comp.lang.c++ :
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Un passage de paramètre le fait systématiquement.
void ma_fonction(char *p)
{
strcpy(p,"Test");
}
...
char toto[300];
ma_fonction(toto); // passe l'adresse du tableau
cout << toto ; // contenu de toto modifié par ma_fonction
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
Il faut que toto pointe sur quelque chose avant d'entrer dans la
fonction, puisque la fonction ne pourra pas rendre une valeur modifiée.
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
Le mercredi 6 juillet 2005 à 22:06, Vincent a écrit dans
fr.comp.lang.c++ :bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Un passage de paramètre le fait systématiquement.
void ma_fonction(char *p)
{
strcpy(p,"Test");
}
...
char toto[300];
ma_fonction(toto); // passe l'adresse du tableau
cout << toto ; // contenu de toto modifié par ma_fonctionComment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
Il faut que toto pointe sur quelque chose avant d'entrer dans la
fonction, puisque la fonction ne pourra pas rendre une valeur modifiée.
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
Là c'est mélangé.
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
Là c'est mélangé.
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
ou bien :
char *toto = new char[300];
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
delete [] toto;
Là c'est mélangé.
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
Le jeudi 7 juillet 2005 à 10:35, JBB a écrit dans fr.comp.lang.c++ :char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
1. La bibliothèque C fait partie intégrante du C++, que ça te plaise ou
non.
2. Le cast sur malloc() est obligatoire en C++, inutile et gênant en C.
C'est visiblement une écriture C++.
3. cout << toto, c'est du C aussi ?
Le jeudi 7 juillet 2005 à 10:35, JBB a écrit dans fr.comp.lang.c++ :
char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
1. La bibliothèque C fait partie intégrante du C++, que ça te plaise ou
non.
2. Le cast sur malloc() est obligatoire en C++, inutile et gênant en C.
C'est visiblement une écriture C++.
3. cout << toto, c'est du C aussi ?
Le jeudi 7 juillet 2005 à 10:35, JBB a écrit dans fr.comp.lang.c++ :char *toto = (char *)malloc(300);
ma_fonction(toto); // passe le contenu du pointeur
cout << toto ; // bloc pointé par toto modifié par ma_fonction
free(toto);
C'est bien beau tout ça mais ça n'a rien avoir avec du C++, c'est du C.
1. La bibliothèque C fait partie intégrante du C++, que ça te plaise ou
non.
2. Le cast sur malloc() est obligatoire en C++, inutile et gênant en C.
C'est visiblement une écriture C++.
3. cout << toto, c'est du C aussi ?
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
Donc,
ma_fonction(toto);
ou plus explicitement
ma_fonction(&toto[0]);
vont fonctionner sans problème, comme déjà répondu.
Le fait que quand un tableau est un paramètre il devienne un pointeur est
à admettre comme un particularisme. Une struct ne contenant qu'un tableau
passera ce tableau normalement, par copie de valeurs, et donc les
modifications éventuelles n'agiront pas sur l'original.
Attention, dans le cas par exemple:
char* tata = "01234567890123456789012345678";
ça va certainement crasher à l'exécution (écriture dans une zone read
only).
Code à la noix pour illustrer:
class ttiti{public: char toto[30];};
// ou
//typedef struct ttiti {char toto[30];};
void f(char* tab){tab[5] = ' ';}
void g(ttiti titi){
titi.toto[5] = ' ';
std::cout << "Dans g(): " << titi.toto << std::endl;
}
int main(void)
{
char toto[30] = "je suis le ténébreux";
char* tata = "01234567890123456789012345678";
ttiti titi;
int i = -1;
while(i++, titi.toto[i] = toto[i]); // ouille ouille ouille
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
f(&toto[0]);
//f(tata); //crash
//f(titi.toto); //OK
g(titi);
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
return 0;
}
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
Pierre Maurette
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
Donc,
ma_fonction(toto);
ou plus explicitement
ma_fonction(&toto[0]);
vont fonctionner sans problème, comme déjà répondu.
Le fait que quand un tableau est un paramètre il devienne un pointeur est
à admettre comme un particularisme. Une struct ne contenant qu'un tableau
passera ce tableau normalement, par copie de valeurs, et donc les
modifications éventuelles n'agiront pas sur l'original.
Attention, dans le cas par exemple:
char* tata = "01234567890123456789012345678";
ça va certainement crasher à l'exécution (écriture dans une zone read
only).
Code à la noix pour illustrer:
class ttiti{public: char toto[30];};
// ou
//typedef struct ttiti {char toto[30];};
void f(char* tab){tab[5] = ' ';}
void g(ttiti titi){
titi.toto[5] = ' ';
std::cout << "Dans g(): " << titi.toto << std::endl;
}
int main(void)
{
char toto[30] = "je suis le ténébreux";
char* tata = "01234567890123456789012345678";
ttiti titi;
int i = -1;
while(i++, titi.toto[i] = toto[i]); // ouille ouille ouille
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
f(&toto[0]);
//f(tata); //crash
//f(titi.toto); //OK
g(titi);
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
return 0;
}
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
Pierre Maurette
bonjour,
J'ai récupéré un code que je dois maintenir et faire évoluer.
Il y à un char[300] qui est utilisé, je veux utiliser une méthode qui
veut un char*.
Comment passer du char[300] à un char* ? merci!!
Comment passe t'on une chaine en paramètre dans une méthode?
cette chaine est modifiée par la méthode du genre :
char *toto;
ma_fonction(toto);
cout << toto ; // toto modifié par ma_fonction
et avec un char toto[30] ?
Pour résumer, la méthode attend un pointeur (sur char) *non constant*.
Donc,
ma_fonction(toto);
ou plus explicitement
ma_fonction(&toto[0]);
vont fonctionner sans problème, comme déjà répondu.
Le fait que quand un tableau est un paramètre il devienne un pointeur est
à admettre comme un particularisme. Une struct ne contenant qu'un tableau
passera ce tableau normalement, par copie de valeurs, et donc les
modifications éventuelles n'agiront pas sur l'original.
Attention, dans le cas par exemple:
char* tata = "01234567890123456789012345678";
ça va certainement crasher à l'exécution (écriture dans une zone read
only).
Code à la noix pour illustrer:
class ttiti{public: char toto[30];};
// ou
//typedef struct ttiti {char toto[30];};
void f(char* tab){tab[5] = ' ';}
void g(ttiti titi){
titi.toto[5] = ' ';
std::cout << "Dans g(): " << titi.toto << std::endl;
}
int main(void)
{
char toto[30] = "je suis le ténébreux";
char* tata = "01234567890123456789012345678";
ttiti titi;
int i = -1;
while(i++, titi.toto[i] = toto[i]); // ouille ouille ouille
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
f(&toto[0]);
//f(tata); //crash
//f(titi.toto); //OK
g(titi);
std::cout << toto << 't' << tata << 't' << titi.toto << std::endl;
return 0;
}
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
Pierre Maurette
Disons que lorsqu'on écrit un programme, vaut mieux employer
un style qui sucite le moins de doute possible dans l'esprit
de celui qui le relira ( y compris soi-même ).
Disons que lorsqu'on écrit un programme, vaut mieux employer
un style qui sucite le moins de doute possible dans l'esprit
de celui qui le relira ( y compris soi-même ).
Disons que lorsqu'on écrit un programme, vaut mieux employer
un style qui sucite le moins de doute possible dans l'esprit
de celui qui le relira ( y compris soi-même ).