c - PDCurses mvprintw 结构错误

标签 c pointers struct curses pdcurses

我正在使用 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/

相关文章:

c - 函数的输出带有 float 指针参数,输入为 int 变量的地址

指针可以存在于其作用域之外吗

c - 结构函数指针参数?

c++ - 如何从 vector 中删除结构元素?

C Makefile - 如何在构建时添加头文件(linux 内核)?

c - 在 Linux 上,select() 如何确定何时可以无阻塞地写入 TCP/IP 连接?

无法理解C中的尝试

包含结构的 C union - 内存映射 - 编译器跳过一个字节?

C Tcl 命令不被识别

.net - 从 WSDL 生成 Windows 窗体