如何回到已经用C打印的某个位置?

时间:2008-11-05 04:41:07

标签: c printf textcolor

让我们看一下以下程序打印约10行#

的情况
for(i=0;i<10;i++)
prinf("\n#");

现在如何回到第5行并编辑#并改变它的颜色而不清除屏幕或清除以下5行?

我试过

window(5,0,20,20);
textcolor(GREEN);
cprintf("#");

但是它没有编辑那个,但是它打印在原版的那边。为什么?

有没有其他方法可以动态更改已打印文本的颜色? 请帮帮我..我的环境是窗户上的涡轮增压

4 个答案:

答案 0 :(得分:3)

看起来你正在混合printf和另一个输出库 - 不推荐这样做。 Printf期望被发送到一个字符终端,而有问题的输出库可能会假装它具有独占访问权(并且可能行为不端。)

基于一个函数,您可能使用conio.h。可以找到文档here,其中的目录显示了每个可用的功能。从该索引,您应该能够立即发现该功能。

窗口函数没有按照您的意愿执行,因为它只设置光标可以更改文本的区域 - 它不会移动光标,您需要使用其他库函数。

答案 1 :(得分:1)

-1:发布家庭作业问题的一些提示:

1)正确的问题!发布的代码不会像描述中那样执行:

 for(i=0;i<10;i++)
    prinf("#");

这将在一行上打印10个#个字符,因为没有行尾字符。原始描述谈到“打印10行。”

2)提供必要的详细信息:您使用的是什么环境:Windows? Linux呢?什么编译器?这是一个窗口或基于文本的环境吗?

3)STFW发布之前。查找“ANSI Escape Sequences”或“定位光标”。

答案 2 :(得分:1)

窗口函数通常会从第一个两个坐标像素创建一个窗口,即在您的示例中(5,0)到下一个2坐标指向的像素。所以你的程序应该可以运行

试一试,否则使用gotoxy()

答案 3 :(得分:0)

也许 -

cprintf("\b#");

'b'代表退格

相关问题