gpt4 book ai didi

c - 使用 curses 中的 initscr() 时在错误的位置打印

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:51 25 4
gpt4 key购买 nike

我有以下代码。

initscr();
while ((ch = getch()) != '#')
{
system("ls");
}
endwin();

问题是结果没有正常打印出来。这就是它给我结果的方式:

project  project.c  shell.c  test   test1.c  test2.c
Project shell Signal Labs test1 test2 text.txt

但是我希望结果是这样的:
我的意思是我希望它以这种方式格式化:

project  project.c  shell.c      test   test1.c  test2.c
Project shell Signal Labs test1 test2 text.txt

我确定缺少函数或与 initscr() 相关的函数。

最佳答案

“系统”调用写入标准输出,curses 库写入相同的文件描述符,但它们的输出可能不会以相同的方式缓冲,并且 curses 库另外设置输出终端模式改变回车和换行的工作方式。所以你真的不想以那种方式合并两者......

您可以读取命令的结果,并使用 curses 打印那个。像这样(参见手册页的 Initialization 部分):

initscr();
cbreak();
noecho();
while ((ch = getch()) != '#')
{
FILE *pp = popen("ls", "r");
if (pp != 0) {
while ((ch = fgetc(pp)) != EOF) {
addch(ch & 0xff);
}
pclose(pp);
}
}
endwin();

关于c - 使用 curses 中的 initscr() 时在错误的位置打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212266/

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