我正在使用 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 ,语法是
int mvprintw(int y, int x, char *fmt, ...);
所以,你需要编写这样的代码
mvprintw(i, 0, "%d", pFilm->nId); //for ints
.
.
mvprintw(i, 15, "%s", pFilm->pszTitre); // for strings
关于c - PDCurses mvprintw 结构错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29944977/