这里有一个非常简单的程序:
printf("Enter your number in the box below\n");
scanf("%d",&number);
现在,我希望输出看起来像这样:
Enter your number in the box below
+-----------------+
| |*| |
+-----------------+
其中,| * |是用户输入值的闪烁光标。
由于C是线性代码,它不会打印盒子艺术,然后要求输出,它会打印顶行和左列,然后在输入后打印底行和右列。
所以,我的问题是,我可以先打印盒子,然后有一个功能将光标放回盒子里吗?
答案 0 :(得分:18)
如果你在某个Unix终端(xterm
,gnome-terminal
...)下,你可以使用控制台代码:
#include <stdio.h>
#define clear() printf("\033[H\033[J")
#define gotoxy(x,y) printf("\033[%d;%dH", (x), (y))
int main(void)
{
int number;
clear();
printf(
"Enter your number in the box below\n"
"+-----------------+\n"
"| |\n"
"+-----------------+\n"
);
gotoxy(3, 2);
scanf("%d", &number);
return 0;
}
printf(
"Enter your number in the box below\n"
"╔═════════════════╗\n"
"║ ║\n"
"╚═════════════════╝\n"
);
更多信息:
man console_codes
答案 1 :(得分:8)
在linux终端中,您可以使用终端命令移动光标,例如
printf("\033[8;5Hhello"); // Move to (8, 5) and output hello
其他类似的命令:
printf("\033[XA"); // Move up X lines;
printf("\033[XB"); // Move down X lines;
printf("\033[XC"); // Move right X column;
printf("\033[XD"); // Move left X column;
printf("\033[2J"); // Clear screen
请注意,这不是标准化解决方案,因此您的代码不会独立于平台。
答案 2 :(得分:1)
C语言本身没有带光标的屏幕的概念。您将不得不使用某种提供此支持的库。 curses是最着名和最广泛使用的终端控制库。
答案 3 :(得分:0)
#include <conio.h>
void main() {
char d;
cprintf("*---------*\n\r| |\n\r*---------*");
gotoxy(4,2);
scanf("%c",&d);
}
这适用于所有操作系统