C++ fonction parametre char* [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 20 janvier 2007
Statut
Membre
Dernière intervention
21 janvier 2008
-
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
-
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

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

strcpy(nom, "toto");
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
de rien

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

Cordialement..
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
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...
Messages postés
2
Date d'inscription
samedi 20 janvier 2007
Statut
Membre
Dernière intervention
21 janvier 2008

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
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
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..