Problème de variable char en C++

Fermé
Pecose - 12 févr. 2008 à 22:39
 Pecose - 13 févr. 2008 à 07:23
Bonjour a tous, programmeurs,
Je vous appelle a l'aide pour cette chose là:

#include <cstdlib>
#include <iostream>
using namespace std;

char* boucleU(char vone[123],char vtwo[123],char vtre[123],int variable)
{
char Xone[123];char Xtwo[123];char Xtre[123];
vone=Xone;vtwo=Xtwo;vtre=Xtre;
char* tablchar[]={Xone,Xtwo,Xtre};
return tablchar[variable];
}

int main()
{
int i=0;
cin>>i;
char Uone[123];char Utwo[123];char Utre[123];
cin>>Uone>>Utwo>>Utre;
cout<<"La variable est "<<boucleU(Uone,Utwo,Utre,i)<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Mon problème:
Les variables Uone, Utwo et Utre aprés leur p'tit tour chez boucleU reviennent avec des caractères bizare...
Petit bonhommes et autres formes étranges...

Ma question:
Peut on garder intactes la valeur des varables sans réécrire tout le programme?

Merci d'avence...

6 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2008 à 22:47
Ton code est très étrange lol. Tu veux faire quoi ?
Lorsque de l'appel boucleU(Uone,..), tu fais Uone = Xone qui n'est pas initialisée, donc Uone va pointer sur une zone aléatoire. Pire encore à la fin de la fonction la variable Xone n'existera plus car elle est locale. Donc Uone pointera sur rien. Tu n'as pas des warnings à la compilation ?
0
yoann_tux Messages postés 441 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 24 juillet 2008 95
12 févr. 2008 à 23:03
A priori la lecture ne s'arrêtes pas, je ferais une lecture de cin, et après je lirais cette chaines de caractère avec un sur 3 etc...
Parce que les caractères bizzard sont tous simplement la mémoire... donc tu fais un débordement mémoire et ce n'est vraiment pas propre... enfin je me trompe p-e mais j'aime pas trop ce que tu as fait....
0
C'est trés simpa mais mon petit esprit ne convien pas pour comprendre là ou tu veux en venir.
Comment je doit faire pour initialiser Uone au bon moment?
0
Moi je le trouve normal... c'est un code...
Bon c'est claire, il es un peut personnel mais bon...
Merci pour les explications, mais as tu un solution?
0

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

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2008 à 23:48
Ben, je ne sais même pas ce que tu veux faire, donc je peux pas vraiment t'aider.
Explique ce que tu souhaites faire, je t'aiderai après.

Sinon, lorsque tu fais char var[150], var contiendra des données aléatoires car il n'a pas été initialisé. C'est ce que tu fais dans ta fonction.
0
C'est pas grave, j'ai trouver:

#include <cstdlib>
#include <iostream>
using namespace std;

char* boucleU(char vone[123],char vtwo[123],char vtre[123],int variable)
{
char* tablchar[]={vone,vtwo,vtre};
return tablchar[variable];
}

int main()
{
int i=0;
cin>>i;
char Uone[123];char Utwo[123];char Utre[123];
cin>>Uone>>Utwo>>Utre;
cout<<"La variable est "<<boucleU(Uone,Utwo,Utre,i)<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Merci a tout le monde pour votre aide,
L'idée était de pouvoir modifier les variables dans un tableau pour pouvoir les classer et les sortir au hasard avec rand().
0