gpt4 book ai didi

c - ncurses带有echo()的getcur()是否可以确保在执行程序中的下一条语句之前在屏幕上看到该字符?

转载 作者:行者123 更新时间:2023-12-04 09:30:33 24 4
gpt4 key购买 nike

我有一个看起来像这样的ncurses程序

1. int c =0;
2. initscr();
3. timeout(-1);
4. printw("Enter a character");
5. getch();
6. printw("\nOkay\n");
7. c = 5;


我希望在将c修改为5之前,应发生 getch()以及以下 printw()的输出(并且在屏幕上可见)。但是,这似乎没有发生(使用qemu-kvm并在该点进行验证)。是否有任何原因会导致这种情况发生,或者是否有某种方法可以确保在执行下一条语句之前在屏幕上显示输出?
fflush(stdout)确保吗?

该操作系统是使用qemu-kvm运行的虚拟gentoo。屏幕处于控制台模式(X未初始化)。

最佳答案

您可能忘记了发出refresh()命令。请参阅以下似乎有效的示例代码:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <curses.h>


int main(void) {

WINDOW * mainwin;
int c=0;

/* Initialize ncurses */

if ( (mainwin = initscr()) == NULL ) {
fprintf(stderr, "Error initialising ncurses.\n");
exit(EXIT_FAILURE);
}

timeout(-1);
printw("Enter a character: ");
getch();
printw("\nC = %d Ok\n", c);
c = 5;
printw("C is now %d\n",c);
refresh();
sleep(10);
/* Clean up after ourselves */

delwin(mainwin);
endwin();
refresh();

return EXIT_SUCCESS;
}

关于c - ncurses带有echo()的getcur()是否可以确保在执行程序中的下一条语句之前在屏幕上看到该字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com