tenev911
Messages postés23Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention19 avril 2009
-
3 déc. 2006 à 01:11
tenev911
Messages postés23Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention19 avril 2009
-
3 déc. 2006 à 22:14
Bonjour, voici mon probleme :
J'utilise la librairie ncurses.h et il permet de faire un type de variable appellé WINDOW (qui correspond graphiquement à un pointeur qui me permettra de creer une zone de texte sur l'écran) et qui est un pointeur, donc WINDOW*
J'ai fait une fonction qui affiche un tableau (Car c'est un peu compliqué d'en faire un sous ncurse.h) et qui "retourne" en quelque sorte les cases de la grille pour pouvoir apres écrire à l'interieur. Et j'ai un probleme de passages de pointeurs de tableau, je m'explique :
Je creer ma fonction :
#define HAUTEUR 10
#define LARGEUR 10
void affichTab(WINDOW **cases[HAUTEUR][LARGEUR], autre_arguments...)
{
Je creer et affiche ma table ici et pour chaque cases je fait :
*cases[0][0] = newwin(coordonnées et taille de la case) // Creer une zone de texte sur l'écran dans lequel on pourra écrire dedans apres
// En vrai j'utilise un double for pour faire ca a toutes les cases
}
Apres coup, dans le main je met ceci :
int main(void)
{
WINDOW *cases[HAUTEUR][LARGEUR];
affichTab(&cases, autres_arguments...);
wprintw(cases[0][0], "Salut je suis la case 0,0"); // wprintw me permet d'écrire dans la zone graphique que j'ai prédéfinit dans la fonction
}
Donc voila, si je n'invoque pas la fonction affichTab, le wprintw ne saura pas où écrire vu que je n'aurai pas utiliser la fonction newwin, mais quand je l'utilise de la façon que je vient de vous décrire, il me dit que je passe un type d'argument incompatible.
Si dans ma fonction je met en argument *cases[HAUTEUR][LARGEUR] et que dans l'appel de ma fonction je met cases au lieu de &cases, alors parfois ca marche et parfois j'ai une erreur de segmentation (normal)
Je suis encore débutant en C mais je pense que c'est peut-etre parce que je ne sais pas trop passer en argument un pointeur de tableau à deux dimensions. J'ai tout essayé : &cases, cases, &(*cases) mais rien n'y fait.
Si la fonction malloc est la solution, je ne sais pas l'utiliser pour un tableau à deux dimensions.