C - 在没有外部库的情况下设置 Printf 坐标

标签 c

我希望能够使用 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/

相关文章:

c++ - 无限窗口消息循环

c++ - 如何在我的网站上编译 C 代码

c - 文件描述符未在 exec 上关闭

c - openmp减少困惑

c - 使用 MPI 在所有任务上有效地更新相同的数组

C 代码在添加一分钟后无法显示正确的时间

c - 没有'\n'的printf()在libev中不起作用

objective-c - 使用 ARC 时,Objective-C 对象而不是结构应该使用什么?

python - 尝试将 .dll 加载到 Python 时出错 "The specified module could not be found"

c - (&) 的地址从符号表中获取值