Nei*_*eil 3 c printf newline stream carriage-return
我正在尝试编写一个简单的小代码片段来响应箭头按键.我知道up由^ [[A表示,我有以下代码检查该序列:
while( 1 )
{
input_char = fgetc( stdin );
if( input_char == EOF || input_char == '\n' )
{
break;
}
/* Escape sequence */
if( input_char == 27 )
{
input_char = getc( stdin );
if( input_char == '[' )
{
switch( getc( stdin ) )
{
case 'A':
printf("Move up\n");
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
每当我点击"向上"时,转义序列(^ [[A]显示在屏幕上,但"上移"直到我按下回车才出现.
最终目标是用其他一些数据替换当前行上的文本,所以我试着这样做
printf("\r%s", "New Text");
Run Code Online (Sandbox Code Playgroud)
取代"向上移动",但在按下输入后仍然不会显示.
我在读字的方式有问题吗?
谢谢!
编辑快速注释,它适用于*nix系统.
解决方案 感谢大家的指点.我选择了stepanbujnak的解决方案,因为它非常简单.我注意到的一件事是修改字符串(退格等)的键的很多行为与你期望的不同.它会在线上退出任何东西(包括printf'd的东西),我不得不考虑到这一点.在那之后,让其他人排成一行并不太糟糕:)
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |