我希望能够使用 SetCursorPosition 函数使用 x 和 y 坐标进行打印,但据我所知,正确的方法是使用 ncurses。是否可以使用默认的 c 库(如 stdio 或 stdlib)来实现?
最佳答案
C 标准库 I/O 函数是围绕使用发送或接收的字节流而设计的。这些字节流被发送到某些设备,例如终端或打印机或文件或网络设备。标准库 I/O 实际上是面向文本终端、文本打印机和文件的,在这些文件中,字节流或文本字符流写入设备句柄或从设备句柄读取。
关于标准库的唯一一种设备特定定位是针对使用函数的文件,例如 ftell()
和 fseek()
以及 rewind ()
和 fgetpos()
和 fsetpos()
(参见 what is difference between fgetpos/fsetpos and ftell/fseek 对差异的解释)。
C 标准库 I/O 函数没有任何终端或打印机设备特定的功能,例如定位光标、设置文本颜色或文本字体、定位窗口、更改窗口或图形用户常用的任何其他功能接口(interface)或图形打印机(激光或喷墨)。
一个常见的解决方法是使用特殊字符,escape codes , 表示后面的文本是对设备本身的命令,然后指定一个命令,例如设置光标位置或设置文本颜色。这些命令序列有许多事实上的标准,具体取决于目标设备。
在过去有 80 列,25 行终端,大多数终端支持一个事实上的标准,其中一些光标定位元素模仿了 VT-100 video terminal from Digital Equipment Corporation 提供的内容。 .
为了访问该光标定位功能,开发了第一个 C 兼容库,以便程序员可以指定光标位置,库函数将为该位置创建正确的转义代码序列并将其发送到终端。
ncurses是那些早期库的现代版本,可能是在不需要完整的 GUI 时最常用于文本终端仿真的版本。
您可能会发现这个 List of platform-independent GUI libraries虽然 GUI 库对于您实际需要的东西可能有些过分,但很有帮助。
另请参阅 Cross Platform C library for GUI Apps? 的各种答案
关于C - 在没有外部库的情况下设置 Printf 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277762/