怎样使c语言中运行界面的光标移至上一行

怎样使c语言中运行界面的光标移至上一行,第1张

coord表示坐标,计算已输出函数,调整coord的值

如以下代码为定位至屏幕左上角

HANDLE hdl = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {0,0};
SetConsoleCursorPosition(hdl,coord);

如果编译错误,在文件头加上

#include<windowsh>

C标准并没有提供在屏幕上定位光标的方法,其原因很多。C被设计成能在各种各样的计算机上工作,而其中的许多机型都有不同的屏幕类型。例如,在行式打印终端上,不能向上移动光标;一个嵌入式系统甚至也可能是用c编写的,而在它的应用场合可能根本就没有屏幕。尽管这样,在屏幕上定位光标对你的程序来说还是有用的。你可能希望给用户一个吸引人的视觉效果,并且只能通过移动光标来实现;你还可能想用相应的输出命令尝试一点动画效果。尽管这方面没有标准的处理方法,但还是有好几种方法可以解决这个问题。首先,编译程序的开发者会提供一个函数库,专门处理基于他们的编译程序的屏幕输出 *** 作,其中肯定会有定位光标的函数。但是,很多人认为这是最差的解决办法,因为每一个开发商都可以自由地开发自己的实现方法,所以在一种编译程序上开发的程序,当移到另一种编译程序上时,几乎必然要重写,更别说移到另一种计算机上了。其次,可以定义一套标准的库函数,并使编译程序的开发者在他的编译程序中实现这套函数。流行的Curses软件包就起源于这种思路。在大多数计算机和编译程序中都可以使用Curses,因此,用Curses实现屏幕输出的程序在大多数计算机和编译程序中都可以工作。第三,你可以利用这样一个事实,即你想打印到其上的设备会用一种特定的方式解释你送过去的字符。终端(或屏幕)应设计成按一种标准方式去解释送给它们的字符,这就是ANSI标准。

void goto_xy(int x,int y){ //定位光标位置到指定坐标
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos={x,y};
SetConsoleCursorPosition(hOut,pos);
}
这是我写的一个函数 貌似要include "Windowsh"
如果真的要做界面的话 建议不要用控制台了

\a 警报( Alert (ANSI C) ) \b 退格(Backspace) \f 换页(Form feed) \n 换行(Newline) \r 回车(Carriage return) \t 水平制表符(Horizontal tab) \v 垂直制表符(Vertical tab) \\ 反斜杆( Backslash (\) ) \' 单引号( Single quote (') ) \" 双引号( Double quote (") ) \ 问号( Question mark () ) \0oo 八进制数( Octal value (o 代表一个八进制数字) ) \xhh 十六进制数( Hexadecimal value (h 代表一个十六进制数字) ) 给变量赋值的时候,转义字符必须使用单引号引住。例如: char nl = '\n'; 下面我们详细学习每个转移字符的含义。 \a(警报)是 ANSI C89 添加的,用于产生可听或者可视的警报。\a 产生的效果取决于硬件。一般来说,输出 \a 会产生鸣响。但是在某些系统,输出 \a 不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,\a 不应该改变当前活跃位置(active position)。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出 \a 不会导致光标移动位置。 \b、\f、\n、\r、\t,以及 \v 都是输出设备控制符。退格符(\b)使当前行的活跃位置后退一个位置。换页符(\f)使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会导致 PC 机的显示屏换页。换行符(\n)使活跃位置跳到下一行的开端。回车符 ( \r ) 使活跃位置返回当前行的开端。水平制表符(\t)使活跃位置移动若干个位置(通常是8个)。

可以用goto,只不过业界赞成用goto 的人 和不赞成用 goto 的人各占一半,也就是说还存在争议。

至于光标移动那是古老的C库里面的东西了,如果你想考古可以去看看。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13411071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存