我正在使用PDCurses,我想用它来显示电影列表。

我的代码是这样的:

typedef struct{
int     nId;                    /*  Id du film                      */
int     nId_Genre;              /*  Id du genre                     */
int     nId_Distributeur;       /*  Id du distributeur              */
char*   pszTitre;               /*  Titre du film                   */
char*   pszResume;              /*  Resumé du film                  */
char*   pszDate_Debut;          /*  Date de début du film           */
char*   pszDate_Fin;            /*  Date de fin du film             */
int     nDuree;                 /*  Durée du film                   */
int     nAnnee;                 /*  Année du film                   */
struct  FILMS_NEW* pNext;       /*  Pointeur sur le prochain film     */
}FILMS_NEW;

typedef FILMS_NEW * PFILMS_NEW;


int DisplayListFilms(){
PFILMS_NEW pFilm;
int nCount=0,nSizeString;
int i=9;
WINDOW *menu_win;
int startx = 0;
int starty = 0;

initscr();
start_color();          /* Start color functionality    */
clear();
noecho();
cbreak();   /* Line buffering disabled. pass on everything */
startx = (180 - WIDTH) / 2;
starty = (40 - HEIGHT) / 2;

init_pair(1, COLOR_GREEN, COLOR_BLACK);
attron(COLOR_PAIR(1));
attron(A_BOLD);

mvprintw(1, startx+6, "*************************************\n");
mvprintw(2, startx+6, "****                           ******");
mvprintw(3, startx+6, "****      LISTE OF FILMS       ******");
mvprintw(4, startx+6, "****                           ******");
mvprintw(5, startx+6, "*************************************");
mvprintw(7, 0,ENTETE_F);
refresh();

if ((pFilm = pRootFilm) == NULL)
    return 0;


while (pFilm)
{
    mvprintw(i, 0, (char *)pFilm->nId);
    mvprintw(i, 5, (char *)pFilm->nId_Genre);
    mvprintw(i, 10, (char *)pFilm->nId_Distributeur);
    mvprintw(i, 15, pFilm->pszTitre);
    mvprintw(i, 20, pFilm->pszResume);
    mvprintw(i, 25, pFilm->pszDate_Debut);
    mvprintw(i, 30, pFilm->pszDate_Fin);
    mvprintw(i, 35, (char *)pFilm->nDuree);
    mvprintw(i, 40, (char *)pFilm->nAnnee);

    pFilm = pFilm->pNext;
    nCount++;
    i++;
}

return nCount;


}

为什么不起作用?如果我将mvprintw(i,0,“ toto”)放进去,为什么还能工作?

消脂酶帮助!!!!下个月我需要做:)

最佳答案

从您的代码看来,您mvprintw()的用法是错误的。根据man page,synax为

int mvprintw(int y, int x, char *fmt, ...);


因此,您需要像

mvprintw(i, 0, "%d", pFilm->nId);  //for ints
.
.
mvprintw(i, 15, "%s", pFilm->pszTitre); // for strings

09-11 05:37