A voir également:
- [pointeur sur un tableau de pointeur]
- Tableau word - Guide
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
8 réponses
uops désolé, un raccourci malencontreux a posté le message ...
voici donc ma fonction :
char *mafonction(FILE *f)
{
char *tab[1];
char *com,*seq;
char *res;
instruction.......
tab[0] = p1;
tab[1] = p2;
*res = tab
return res;
}
voila. mais ca ne marche pas, et la, je tourne en rond en jouant avec les pointeurs et leurs adresses...arghh
si vous avez une idée, je suis preneur |-)
merci d'avance
voici donc ma fonction :
char *mafonction(FILE *f)
{
char *tab[1];
char *com,*seq;
char *res;
instruction.......
tab[0] = p1;
tab[1] = p2;
*res = tab
return res;
}
voila. mais ca ne marche pas, et la, je tourne en rond en jouant avec les pointeurs et leurs adresses...arghh
si vous avez une idée, je suis preneur |-)
merci d'avance
oups, j'avais laisser quelques erreurs...désolé...
(on ne peut pas editer un message sur ce forum??)
char *mafonction(FILE *f)
{
char *tab[1];
char *com,*seq;
char *res;
instruction.......
tab[0] = com;
tab[1] = seq;
*res = tab;
return res;
}
(on ne peut pas editer un message sur ce forum??)
char *mafonction(FILE *f)
{
char *tab[1];
char *com,*seq;
char *res;
instruction.......
tab[0] = com;
tab[1] = seq;
*res = tab;
return res;
}
Hello,
Je pense que ton char *tab[1] est un pointeur vers un pointeur d'un tableau de pointeur (sympa!).
Solution : déclare le comme char tab[2].
Remarque, pour mettre 2 éléments dans tab, il faut le déclarer tab[2].
Je pense que ton char *tab[1] est un pointeur vers un pointeur d'un tableau de pointeur (sympa!).
Solution : déclare le comme char tab[2].
Remarque, pour mettre 2 éléments dans tab, il faut le déclarer tab[2].
si je fais
char tab[2]; /* declaration */
.....
.....
tab[0] = com;
tab[1] = seq;
*res = tab;
ca me renvoie 3 warnings (un par ligne d'assignement... : "assignements makes integer from pointer without a cast"
char tab[2]; /* declaration */
.....
.....
tab[0] = com;
tab[1] = seq;
*res = tab;
ca me renvoie 3 warnings (un par ligne d'assignement... : "assignements makes integer from pointer without a cast"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oups, je t'ai dit des bétises,
Pour un tableau de pointeur il faut bien utiliser char * tab[2] qui en fait est un char **.
Tu dois donc déclarer char ** res.
Voilà le code :
#include <iostream.h>
int main()
{
char * tab[2];
char comm[20] = "Hello";
char seq[20] = "A+";
char ** res;
tab[0] = comm;
tab[1] = seq;
res = tab;
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
}
Pour un tableau de pointeur il faut bien utiliser char * tab[2] qui en fait est un char **.
Tu dois donc déclarer char ** res.
Voilà le code :
#include <iostream.h>
int main()
{
char * tab[2];
char comm[20] = "Hello";
char seq[20] = "A+";
char ** res;
tab[0] = comm;
tab[1] = seq;
res = tab;
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
}
bonjour,
au sujet de ton code:
#include <iostream.h>
deprecie, preferer:
#include <iostream>
[...]
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
c est pas bon meme si ton compilateur l accepte
faire soit
using std;
en debut de fichier, soit
std::cout .... std::endl...
et finalemement le monsieur il utilisait des File *, donc il faisait du C, donc des printf etaient de rigueur.
donc :
printf("Addr in Res = %s\n", res);
printf( "Addr tab = %s\n", tab);
voili voilou,
--
pouet
au sujet de ton code:
#include <iostream.h>
deprecie, preferer:
#include <iostream>
[...]
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
c est pas bon meme si ton compilateur l accepte
faire soit
using std;
en debut de fichier, soit
std::cout .... std::endl...
et finalemement le monsieur il utilisait des File *, donc il faisait du C, donc des printf etaient de rigueur.
donc :
printf("Addr in Res = %s\n", res);
printf( "Addr tab = %s\n", tab);
voili voilou,
--
pouet
merci pour tes reponses.
ca compile !!
sinon, c koi ca ?
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
et si je fais :
#include <iostream.h>
char ** mafonction(balabla)
{
char * tab[2];
char comm[20] = "Hello";
char seq[20] = "A+";
char ** res;
tab[0] = comm;
tab[1] = seq;
res = tab;
return res;
}
et puis :
char **toto;
char *lulu, *lala;
toto = mafonction(blkabla);
lulu = toto[0];
lala = toto[1];
et bien je n'arrive pas a utiliser lulu et lala....
ca compile !!
sinon, c koi ca ?
cout << "Addr in Res = " << res << endl;
cout << "Addr tab = " << tab << endl;
et si je fais :
#include <iostream.h>
char ** mafonction(balabla)
{
char * tab[2];
char comm[20] = "Hello";
char seq[20] = "A+";
char ** res;
tab[0] = comm;
tab[1] = seq;
res = tab;
return res;
}
et puis :
char **toto;
char *lulu, *lala;
toto = mafonction(blkabla);
lulu = toto[0];
lala = toto[1];
et bien je n'arrive pas a utiliser lulu et lala....
Je penses que cela doit venir du fait que les variables comm et seq sont locales à la fonction "mafonction", le contenu de leur zone mémoire respectives est donc supprimmé dès que l'on sort de la fonction.
Pitounet a raison essayes ça (en C++)
De plus res ne sert à rien
char ** mafonction(balabla)
{
char ** tab = new char* [2];
char* comm = "Hello";
char* seq = "A+";
tab[0]=new char[strlen(comm)+1]; // +1 pour le '\0'
sprintf(tab[0], "%s\0", comm)
tab[1]=new char[strlen(seq)+1]; // +1 pour le '\0'
sprintf(tab[1], "%s\0", seq)
return tab;
}
oublies pas le tlibérer TOUT le tableau ensuite ...
@+,
mirza
De plus res ne sert à rien
char ** mafonction(balabla)
{
char ** tab = new char* [2];
char* comm = "Hello";
char* seq = "A+";
tab[0]=new char[strlen(comm)+1]; // +1 pour le '\0'
sprintf(tab[0], "%s\0", comm)
tab[1]=new char[strlen(seq)+1]; // +1 pour le '\0'
sprintf(tab[1], "%s\0", seq)
return tab;
}
oublies pas le tlibérer TOUT le tableau ensuite ...
@+,
mirza