Passer un tableau de pointeurs en parametres

Signaler
Messages postés
3
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
18 février 2004
-
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
-
bonjour,
je debute en C (dur..) et j'ai un pb qui va surement vous faire ricaner ;-) :
je voudrais passer un tableau de pointeurs en parametre a ma fonction et j'y arrive pas...

#include <stdio.h>

void Fonction(char *Tab, char *Valeur);

int main(void)
{
char *Tab[10];   // mon tableau de pointeurs

char Valeur[] = "mavaleur";

Fonction(Tab, Valeur);
}

void Fonction(char *Tab, char *Valeur)
{
int i;

for (i = 0; i < 10; i++){
Tab[i] = Valeur;
}

printf("%p : \n", Tab);

for (i = 0; i < 10; i++){
printf("%p\n", Tab[i]);
}

}


ben voila mes questions : pourquoi ca marche pas ?... comment faire pour que ca marche ?

Merci d'avance

6 réponses

Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
char *Tab[10];
est equivalent à char **tab;

essaye ca

#include <stdio.h>
#include <string.h>//pour strcpy()
void Fonction(char *Tab, char *Valeur);

int main(void)
{
char Tab[10]; // mon tableau de pointeurs

char Valeur[] = "mavaleur";

Fonction(Tab, Valeur);
}

void Fonction(char *Tab, char *Valeur)
{
int i;

for (i = 0; i < 10; i++){
//Tab[i] = Valeur;// PB
Tab[i] = Valeur[i]; ou *(Tab+i)=*(valeur+i);
}
// ou tu remplaces tout le for
// par ou strcpy(tab,valeur);

printf("%p : \n", Tab);

for (i = 0; i < 10; i++){
printf("%p\n", Tab[i]);
}

Chevalier Pheno Starboard, membre de la Freeman-Corp
Messages postés
3
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
18 février 2004

tout d'abord merci de ta reponse,
en fait en relisant mon post je vois que je n'ai pas été tres clair.

en fait tab est un tableau qui doit accueillir 10 pointeurs (ici ils doivent tous pointer vers Valeur, c bete mais c pour l'exemple)

mon probleme est que je n'arrive pas a passer en parametre mon tableau Tab.

Pour etre plus clair, ca ca marche:
#include <stdio.h>

int main(void)
{
char *Tab[10];

char Valeur[] = "mavaleur";

int i;

for (i = 0; i < 10; i++){
Tab[i] = Valeur;
}

printf("%p : \n", Tab);

for (i = 0; i < 10; i++){
printf("%p\n", Tab[i]);
}

}


sortie :

0xbffffa20 :
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14
0xbffffa14

mais je voudrais le faire en passant par une fonction (1er post)
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
void Fonction(char** Tab, char *Valeur);

ou

void Fonction(char* Tab[], char *Valeur);
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
Salut
char *Tab[10];
c est un char **
donc dans l entete de ta fonction tu dois recuperer un char **
comme te l a mis ymca2003, dans le post ci dessus.
@++

Chevalier Pheno Starboard, membre de la Freeman-Corp
Messages postés
3
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
18 février 2004

merci pour ces explications, je comprends beaucoup mieux.

juste une derniere chose, y a t'il une difference entre
void Fonction(char** Tab, char *Valeur);
et
void Fonction(char **Tab, char *Valeur);

ou entre

void Fonction(char* Tab[], char *Valeur);
et
void Fonction(char *Tab[], char *Valeur);

j'ai deja remarque ces 2 notations mais je n'ai pas trouve d'explication...

En tous cas un grand merci a vous :-)
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
non il n y a pas de difference.
Voila @++

Chevalier Pheno Starboard, membre de la Freeman-Corp