【问题标题】:copy text from terminal to memory将文本从终端复制到内存
【发布时间】:2012-10-28 21:10:42
【问题描述】:

我知道它看起来很丑,但是,假设一个简单的程序,比如:

int main(void)
{
   int line=0, column=1;
   char c;
   system("clear");
   printf("0123\n4567\n");

   getprintedchar(column, line, &c);
   printf("%c", c);
   return 0;
}

这将打印号码1

我们如何使用 LINUX 终端编写这样的功能。我知道我们可以使用ncurses,但这会阻止printf 等许多选项。

我想知道我们是否可以使用struct termios 或其他一些超级笨拙的黑客!

对于来自 borland/windows 的用户,它类似于 conio.h 函数 gettext() 的简化版本。

我们可以读取某个内存区域吗?也许一些assembly 可以直接从Video RAM 的某个区域获取角色?

谢谢!

【问题讨论】:

  • 在过去,您所要做的就是读取地址 0xB8000。这在控制台中是不可能的,除非在诸如 NTVDM 之类的 VM 上,不知道是否有 Linux 的等价物。
  • 没有解决问题的答案,我会接受指出不可能的答案(直到出现另一个解决方案)

标签: c linux console terminal


【解决方案1】:

我知道我们可以使用 ncurses,但这会阻止 printf 等允许的许多选项。

您始终可以使用snprintf 格式化字符串,然后以您想要的任何方式输出。 (N)curses 是一个很好的终端处理库。

我们可以读取某个内存区域吗?

尤其是,这是不可能的。您无法访问终端的内存,因为它是一个单独的进程并且不会共享。

【讨论】:

  • 我正在考虑这个问题。我需要大小列 x 行来计算缓冲区的大小,并处理所有代码...也许重载 printf...
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 2014-02-26
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2015-11-09
  • 2019-05-09
相关资源
最近更新 更多