【问题标题】:Printing string to specific console co-ordinates - C将字符串打印到特定的控制台坐标 - C
【发布时间】:2016-08-22 05:55:35
【问题描述】:

我正在尝试在 C 中的控制台顶部创建一个菜单栏。

我已经成功地创建了我的屏幕骨架(边框等),但现在我正在尝试在我的栏内打印一些文本。

我尝试在代码的每个部分都放置 printfsprintf 但无法让我的文本显示在正确的位置。

最好的命令是什么?

到目前为止我尝试过的代码:

void setup(void) {
        printf("Hello World");
}

int main(void) {
setup_screen();
setup();
show_screen();
}

还有:

void setup(void) {
        char * str[30];
        sprintf(str, "Hello World");
        puts(str);
}

int main(void) {
setup_screen();
setup();
show_screen();
}

我也尝试将两段代码直接放入“主”函数中。

【问题讨论】:

  • 请向我们展示无效的代码。
  • 展示您迄今为止的研究/调试工作。请先阅读How to Ask页面。
  • @SouravGhosh 我用我的代码解释更新了我的问题。我是 stackoverflow 的新手,非常感谢您的反馈。
  • @Chynna 抱歉延迟回复。你的第一个程序对我来说很好,只要我在顶部添加#include <stdio.h>,并注释掉不包括在内的setup_screen()show_screen()。第二个程序需要相同的规定,但它应该是char str[30] 而不是char * str[30]。如果这对您来说仍然很奇怪,请询问当地人是否可以提供帮助。我在 linux 上使用 gcc 进行了尝试,但这太基础了,它应该适用于任何 c 编译器。

标签: c string console placement


【解决方案1】:

没有统一的方式打印到控制台的特定部分。如果是在 PC 上,则可以使用库将角色放置在特定的屏幕坐标处,如果你在 Windows 中。在 Linux 中,如果您的术语设置为模拟 vt100 或其他一些终端,那么您可以发送某些字符序列来将光标定位到屏幕上的某个位置、清除屏幕等等。这些序列通常以 ESC 字符 (0x27) 开头。谷歌“vt100 转义码”,你会找到这些序列的列表。

如果您只想打印带有文本的边框,也许您想要类似的东西

char screenimage[24][80];

表示 24 x 80 屏幕上的每个字符位置。用空格填充它开始,然后根据需要生成您的图片。最后,用类似的东西打印出整个数组

for (int row=0; row < 80; row++)
    for (int col=0; col < 24; col++)
        printf("%c", screenimage[row][col]);

理论上,如果屏幕正好是 24x80,并且打印会换行到下一行,那理论上会起作用。否则,您将需要调整代码。

【讨论】:

  • 我已经尝试将我的代码插入到我更新的问题中显示的“设置”函数中......它导致我的整个代码停止工作,并在我打开程序时关闭控制台。我在 %c 前面加上了 'hello',它打印了各种奇怪的东西。我现在尝试输入我的屏幕高度和宽度值:char screenimage[screen_width()][screen_height()]; for (int row=0; row &lt; screen_height(); row++) for (int col=0; col &lt; screen_width(); col++) printf("%c", screenimage[row][col]);,它不会产生任何输出。
  • 一些附加信息可能表明它与我的其余代码有关:将printf("Hello World") 添加到我的主函数(也不是我的设置函数)不会将任何输出返回到控制台。我是 C 编码新手,所以我不知道这是否正常。
猜你喜欢
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2012-03-11
  • 2017-08-17
  • 2014-04-23
  • 1970-01-01
相关资源
最近更新 更多