C/ c++:按下回车键后,光标是否能保持在当前行
C/C++ : Can I keep the cursor in the current line after pressing ENTER?
我想问一下,按下ENTER键后,是否有办法保持光标在当前行!!
例如…
#include<stdio.h>
int main()
{
int d=0;
printf("Enter a number : ");
scanf("%d",&d);
if(d%2)printf(" is a Odd numbern");
else printf(" is a Even numbern");
return 0;
}
输出示例:
Enter a number : 10
is a Even number
…但我需要的是这样的东西:
Enter a number : 10 is a Even number
我想在用户
用户正在按回车键,这将被回显并开始新的一行。
为了避免这种情况,您需要关闭echo(然后读取和回显除换行符以外的单个字符)。这是与系统相关的,例如在Linux上,您可以将tty设置为raw/uncooked模式。
您可以找到一个库,例如GNU readline,它可以为您完成大部分工作。
简单的回答是"你不能"。没有标准的c++函数来控制这种行为,或者在最后不按enter键的情况下读取数据(事实上,直到你按enter键,数据才真正被"输入",所以程序不会看到数据)。
您可以使用非标准的功能,例如额外的库,例如"curses"库或依赖于系统的代码,但是我们必须生成一次读取一个字符的代码,并使用您编写的代码将其合并在一起。
我建议您使用"在输出中重复输入",并简单地像这样做:
printf("%d is", d);
if (d%2)
printf("an odd numbern");
else
printf("an even numbern");
设置原始键盘模式,禁用规范模式。这几乎就是linux在终端中不显示密码字符的原因。
Termio结构是你应该谷歌的东西。
一个链接是:
http://asm.sourceforge.net/articles/rawkb.html程序集的常量也可用于系统调用ioctl。
这个技巧可能会有帮助,如果你有一个vt100风格的终端:光标移动。