Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Probleme de pointer et de cast.
Envoyé par: phenix

Bonjour
je debut en C, les histoires de caste, de pointers ... ne sont pas encore tres claire pôur moi.

/* menu.c
* Debut de developement: Wed Dec 31 17:07:18 GMT 2003
* Version: 002
* Copyright: phenix 2003
* Licence GPL
*/

#include <stdio.h>
#include <ncurses.h>
#include "gnumeteo.h"

int menux ;
int menuy ;


void mk_menu( char *choix[] )
{
WINDOW *menubox ;
int i ;
int x = 2 ;
int y = 2 ;




int n_choix = sizeof(choix) / sizeof (char *); /* determine la taille du tableau */
menuy = (LINES - MENUHAUT ) / 2;
menux = (COLS - MENULARG ) / 2;
menubox = newwin( MENUHAUT , MENULARG , menuy , menux );
box(menubox, 0 , 0); /* dessin d'une boite */
for(i = 0; i < n_choix; ++i )
{
/*printw("%s" ,n_choix ) ;*/
mvprintw( menubox, x , y, "%s" , choix); /*<< ligne 34 */
++y ;
}
/* wrefresh(menubox); */
refresh();

}

Lorsque je compile j'ai le message suivant. qui me semble bizzard car j'ai passé l'apres midi mais je vois vraiment pas mon ereur.


menu.c: In function `mk_menu':
menu.c:34: warning: passing arg 1 of `mvprintw' makes integer from pointer without a cast
menu.c:34: warning: passing arg 3 of `mvprintw' makes pointer from integer without a cast

Poste le Friday 2 January 2004 13:03:32
Répondre     Citer    
Re: Probleme de pointer et de cast.
Envoyé par: miguel2i

Pas de probleme de pointer en vue mais un probleme de prototype de fonctions.
Un petit man mvprintw donne :

int printw(char *fmt [, arg] ...);
int wprintw(WINDOW *win, char *fmt [, arg] ...);
int mvprintw(int y, int x, char *fmt [, arg] ...);
int mvwprintw(WINDOW *win, int y, int x, char *fmt [, arg] ...);

Je pense que tu veux utiliser la fonction mvwprintw au lieu de mvprintw.

Poste le Friday 2 January 2004 23:53:11
Répondre     Citer    
Re: Probleme de pointer et de cast.
Envoyé par: phenix

bonjour
Au merci beaucoup. Je n'est plus de warning maintenant. Et bien que le resultat ne soit pas encore celui que je souhaite. on s'y approche. Je vais essayer de regler moi même mon probleme d'affichage.
Seul la premiere ligne du tableau s'affiche.

Encore une autre question. commant afficher la valeur de sur chaque ligne ?

Poste le Saturday 3 January 2004 10:26:55
Répondre     Citer    
Re: Probleme de pointer et de cast.
Envoyé par: miguel2i

pour afficher la valeur de sur chaque ligne, il suffi de mettre à la ligne 34 :
mvwprintw( menubox, x , y, "%d %s" , i , choix);
comme avec les fonctions printf

Pour le tableau qui n'affiche que la premier ligne, voici le probleme :
int n_choix = sizeof(choix) / sizeof (char *);
n_choix est toujours égal à 1. Vérifie avec un printf .
en effet, sizeof(type) est remplacé à la compilation par la taille d'un type ou d'une variable. choix est une variable de type char ** (un pointeur) et char * est un pointeur.

Pour la solution on va te laisser chercher !!!

Poste le Sunday 4 January 2004 16:41:42
Répondre     Citer    
Re: Probleme de pointer et de cast.
Envoyé par: phenix

Bonjour et merci pour tes presisions. J'essayerais lorsque j'aurais plus de temps libre.

Poste le Monday 5 January 2004 18:51:03
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Probleme de pointer et de cast.
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons