如何将输入文本光标定位在C?
在这里,我有一个非常简单的程序:
printf("Enter your number in the box below\n"); scanf("%d",&number);
现在,我希望输出看起来像这样:
Enter your number in the box below +-----------------+ | |*| | +-----------------+
哪里,| * | 是用户键入其值的闪烁光标。
由于C是一个线性代码,它不会打印盒子艺术,然后要求输出,它将打印顶行和左列,然后输入后打印底行和右列。
所以,我的问题是,我可以先打印盒子,然后有一个function将光标放回盒子里吗?
如果你在某个Unix终端( xterm
, gnome-terminal
…)下,你可以使用控制台代码:
#include #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; }
或者使用Box-drawing字符 :
printf( "Enter your number in the box below\n" "╔═════════════════╗\n" "║ ║\n" "╚═════════════════╝\n" );
更多信息:
man console_codes
在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
请记住,这不是标准化解决方案,因此您的代码不会独立于平台。
C语言本身没有任何带有光标的屏幕的概念。 您将不得不使用某种提供此支持的库。 curses是最着名和最广泛使用的终端控制库。