C++ fonction parametre char*

Résolu
cs_zimzima Messages postés 2 Date d'inscription samedi 20 janvier 2007 Statut Membre Dernière intervention 21 janvier 2008 - 21 janv. 2008 à 14:02
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 22 janv. 2008 à 12:09
Bonjour,
 Je dois développer un nouveau programme et dans le cahier des charges, je dois utiliser une fonction dont le prototype est de la forme:
void MaFonction(char *chaine1, char *chaine2)
où les chaines 1 et 2 contiendront du  texte renvoyé par la fonction "MaFonction"
j'aimerai pouvoir utiliser les parametres chaine1 et chaine2 renvoyés par la fonction dans mon programme principal(par exemple les afficher à lécran)

Problème:
quand j'execute le code de l'exemple cidessous, après execution de la fonction, les parametres de la fonction dans mon programme principal sont vide ou ne contiennent pas le texte que j'ai voulu transmettre

// ptchar.cpp : Defines the entry point for the console application.
//
/******************************************************/
// But du Programme :
// Utiliser le prototype de fonction
// void pchar(char *nom, char *prenom)
// pour renvoyer deux chaines de caratères avec une seule fonction
// et utiliser les parametres renvoyé par la fonction dans la suite du programme
/******************************************************/
#include "stdafx.h"
#include <fstream>
#include
#include <sstream>
using namespace std;


// declaration Prototype de la fonction
void pchar(char *nom, char *prenom);


/*------- Programme Principal --------*/
int main(int argc, char* argv[])
{
 char *nom1;
 char *prenom1;
 // Appel fonction
 pchar ( nom1, prenom1);
 // probleme nom1 et prenom1 ne contiennent pas "toto" et "tata" 
return 0;
}


/*------------ Fonction -------------*/
void pchar(char *nom, char *prenom)
{
 nom = "toto";
 prenom = "tata";
}

5 réponses

cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
21 janv. 2008 à 14:41
J'ai oublié de préciser que tu ensuite utiliser la fonction strcpy() pour copier "toto" dans nom :

strcpy(nom, "toto");
3
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
21 janv. 2008 à 15:51
de rien

dorénavant il vaut mieux que tu poste dans le forum C++ et non pas Le Bar..

Cordialement..
3
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
21 janv. 2008 à 14:39
Salut,

tu dois d'abord réserver de l'espace mémoire pour nom et prenom :

nom = newchar[5]; /* longueur de "toto" + 1 pour le '\0' */

// de même pour prenom



Soyez le bienvenue...
0
cs_zimzima Messages postés 2 Date d'inscription samedi 20 janvier 2007 Statut Membre Dernière intervention 21 janvier 2008
21 janv. 2008 à 15:22
Merci beaucoup, c'est parfait, ca marche,
Il me semblait avoir essayé cette solution et que ca plantait, mais c'est ok
Donc encore merci
0

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

Posez votre question
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
22 janv. 2008 à 12:09
ReSalut,

lorsque tu crée des variables avec taille dynamique (c'est à dire avec new), il faut que tu libère l'espace alloué avec free..

en général, c'est au niveau du destructeur..
0
Rejoignez-nous