问题描述
在下面的程序中,我尝试使用 ncurses 输出十行,每行十个 Unicode 字符。循环的每次迭代从三个 Unicode 字符的数组中选择一个随机字符。然而,我遇到的问题是 ncurses 并不总是每行写 10 个字符......这有点难以解释,但如果你运行程序,也许你会看到这里和那里都有空格。有些行将包含 10 个字符,有些只有 9 个,有些只有 8 个。在这一点上,我不知道我做错了什么。
我在 Ubuntu 20.04.1 机器上运行这个程序,我使用的是默认的 GUI 终端。
#define _XOPEN_SOURCE_EXTENDED 1
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <ncurses.h>
#include <locale.h>
#include <time.h>
#define ITERATIONS 3000
#define REFRESH_DELAY 720000L
#define MAXX 10
#define MAXY 10
#define RANDOM_KANA &katakana[(rand()%3)]
#define SAME_KANA &katakana[2]
void show();
cchar_t katakana[3];
cchar_t kana1;
cchar_t kana2;
cchar_t kana3;
int main() {
setlocale(LC_ALL,"");
srand(time(0));
setcchar(&kana1,L"\u30d0",WA_NORMAL,5,NULL);
setcchar(&kana2,L"\u30a6",4,NULL);
setcchar(&kana3,L"\u30b3",NULL);
katakana[0] = kana1;
katakana[1] = kana2;
katakana[2] = kana3;
initscr();
for (int i=0; i < ITERATIONS; i++) {
show();
usleep(REFRESH_DELAY);
}
}
void show() {
for (int x=0; x < MAXX; x++) {
for (int y = 0; y < MAXY; y++) {
mvadd_wch(y,x,RANDOM_KANA);
}
}
refresh();
//getch();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)