1

让我们假设下面的程序打印了大约 10 行 #

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

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

我试过了

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

但它不是在编辑那个,而是在原始的一侧打印。为什么?

还有其他方法可以动态更改已打印文本的颜色吗?请帮帮我..我的环境是windows上的turbo c

4

4 回答 4

3

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

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

窗口函数不会做你想做的事,因为它只设置光标可以更改文本的区域 - 它不会移动光标,你需要使用其他库函数。

于 2008-11-05T06:42:30.380 回答
1

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

1) 正确回答问题!发布的代码不执行描述状态:

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

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

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

3) 发布前的 STFW。查找“ANSI 转义序列”或“定位光标”。

于 2008-11-05T05:14:12.617 回答
1

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

试试看,或者使用 gotoxy()

于 2008-11-12T08:52:41.423 回答
0

也许-

cprintf("\b#");

'b' 用于退格

于 2008-11-05T04:52:33.830 回答