Tableau contenant adresses de variable char

Résolu
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007
- 8 sept. 2004 à 19:03
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007
- 9 sept. 2004 à 21:44
Bonjour,
j'aimerais savoir s'il est possible d'avoir un tableau contenant 5 adresses de chaines de caractère, un tableau du genre qui donnerait ça :

tableau[0] = 0x123456789
tableau[1] = 0x987654321
tableau[2] = 0x654987321
tableau[3] = 0x789123456
tableau[4] = 0x569456577
tableau[5] = 0x134654565

et que les adresses 0x????????? contiennent le mot : "test 0" pour tableau[0]
"test 1" pour tableau[1]

auriez vous une solution à mon problème ?

cordialement.

11 réponses

cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
9 sept. 2004 à 19:13
compteur == 5 tt le temps ok donc :

char *mot[5];

for (...; i < 5; ...) {
mot[i] = malloc(...);
strcpy(mot[i], buffer);
}

voila, et t'oublie pas les free a la fin de ta fonction.

++
3
cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
8 sept. 2004 à 19:21
char *coucou[5];

coucou[1] = 0x12345678;
...
etc

++
0
cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
8 sept. 2004 à 19:22
Ah j'avais pas lu la fin...

char coucou[5][12];

strcpy(coucou[1], "test 0");

++
0
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007

8 sept. 2004 à 19:56
je me suis mal exprimé.
Voici un bout de source :
int vncracker_client_to_vncracker_server_connect_ask_for_passwords(SSL *SSL_socket){
/* Declarations */
charbuffer;
char*arglist[5];
int counter = 0;
/* End of declarations */

while( counter != 5 ){
if((SSL_read(SSL_socket,buffer,sizeof(buffer))) <= 0){
cout<<"Unable to receive new passwords, retrying... in 30 secondes "<<flush;
}

/*ATTENTION ICI CA NE MARCHE PAS*/
arglist[counter] = buffer;
/*ATTENTION ICI CA NE MARCHE PAS*/

counter++;
}

return 1;
}

je veux que
tant que counter est différent de 5
arglist[0] recoive la chaine de caractère contenue dans buffer.
exemple : arglist[0] contiendrait la chaîne buffer de la première boucle de counter.
arglist[1] contiendrait la chaine "test 1"
...
arglist[n] contiendrait la chaine "test n"
donc si par exemple buffer contient "test à la con" je veux que "test à la con" soit attribué à arglist[0].

Or ça ne marche pas. Je peux mettre une chaine de caractères dans arglist[0] si et seulement si je le fais au moment de la déclaration :
char *arglist[1] = {"test à la con"};
0

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

Posez votre question
cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
8 sept. 2004 à 20:12
oula, ok.

Deja ton code, excuse moi, mais est totalement faux !

char buffer[256];
char arglist[5][256];
int counter = 0;
/* End of declarations */

while( counter != 5 ){
if((SSL_read(SSL_socket,buffer,sizeof(buffer))) <= 0){
cout<<"Unable to receive new passwords, retrying... in 30 secondes "<<flush;
}

/*ATTENTION ICI CA NE MARCHE PAS*/
strcpy(arglist[counter], buffer);
/*ATTENTION ICI CA NE MARCHE PAS*/

counter++;
}

return 1;
}

Devrait meux aller nan ?
0
cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
8 sept. 2004 à 20:13
Apres la taille du buffer, c a toi de voir ce kil faut stocker dedans, et donc de la determiner.
0
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007

8 sept. 2004 à 20:17
merci beaucoup, et moi qui me prenait la tête...... pffff.
0
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007

8 sept. 2004 à 21:16
Non, en fait j'avais raison de me prendre la tête, j'ai crié victoire trop vite. Je réexplique encore mon problème, j'ai décidement du mal :

je veux stocker dans un tableau t constitué de 5 éléments e,
les différentes adresses mémoire x
des différents éléments e' d'un tableau char c.

C'est à dire que je veux que :

t[e2] = adresse mémoire de c[e'2] traduction :

element e2 du tableau t = adresse mémoire de l'élement e'2 du tableau c
ce qui donne en écriture c++ :

t[2] = &c[2]

donc normalement si je fais : cout<<t[2]<<flush;
j'aimerais un résultat du genre 0x????????
et que quand je fais un : cout<<*t[2]<<flush;
j'obtienne la valeur contenue dans c[2]
0
abdoulax
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

8 sept. 2004 à 22:51
moi je croi que g compris , tu veux fair un char avec plusieur solution en fonction du nombre entrer dans le parametre du char .

LOL vive ma phrase ...

Bon si c ça , la solution c tout con :

char *mot[]={
"hihi",
"hehe",
"lol",
NULL,
};

donc : mot[n] si n = 1 cela reourne hihi , si n =2 retourne hehe enfin si n = 3 retourne lol .

J'espère avoir répondu à ta question
0
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007

9 sept. 2004 à 18:53
Merci à tous de votre aide.
seulement ce n'est pas encore ça, c'est presque ça ! L'idée est tout à fait là ! le seul truc c'est que je veux que char *mot soit dynamique :

char *mot[];
char buffer[9]:
int compteur;

for (compteur = 0 ; compteur <5;compteur++)
{
mot[compteur] = buffer;
}

donc si buffer contient la chaine "bonjour" quand compteur = 0, je veux que mot[0] contienne "bonjour!"
si buffer contient la chaine "blablabla" quand compteur = 1, je veux que mot[1] contienne la chaine "blablabla"

ce qui reviendrait à faire char *mot[] = { "bonjour!" } seulement quand on fait une délaration de ce genre, mot[0] est constant et la chaine stocké à mot[0] ne peut pas être changée ! Or mon programme doit changer régulièrement la chaine contenue dans mot[0];
0
neoTHGLF
Messages postés
65
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
17 décembre 2007

9 sept. 2004 à 21:44
Ca marche du tonnerre, merci beaucoup.
0