cのように、scanf(キーボードからの入力を受け取ります)のような動作をしていますが、端末のように矢印キーを押してカーソルを入力に移動できますか?scanfとcの矢印キーの対応
0
A
答えて
0
これを行うためのC標準の機能はありません。
あなたは、ほとんどの(おそらくすべて)の端末のプログラムがし続けている、あなたは少し仕事をしたい場合は、VT100のエスケープシーケンスを使用して「独自のロール」することができ、以前の提案に加えてncurses
-1
を見ることができますサポート。ここでは、小さなサンプルプログラムは、だ
#include <stdio.h>
#include <string.h>
#include "vt100.h"
int main (int argc, char *argv[])
{
char cupstr[99];
char reply[99];
strcpy(cupstr,_cup(12,25));
printf("%sEnter Data ---> ",cupstr);
fgets(reply,88,stdin);
strcpy(cupstr,_cup(13,25));
printf("%sEchoed Data --> %s\n",cupstr,reply);
}
そして、大部分は、これらのエスケープシーケンスは、あなたはとてもクールに見えるために使用されるすべてのものをプログラムしてみましょう
/* ------------------------------------------------------------------------- *
VT100.H (c)1989-1999, John Forkosh Associates VT-100 Graphics
* ------------------------------------------------------------------------- */
#define bel printf("\007")
#define esc printf("\033")
#define csi printf("\033[")
#define lscreen printf("\033[?5h")
#define dscreen printf("\033[?5l")
#define rev_vid printf("\033[7m")
#define blink printf("\033[5m")
#define under printf("\033[4m")
#define bold printf("\033[1m")
#define norm_vid printf("\033[0m")
#define wide_vid printf("\033#6")
#define high_vid2 printf("\033#4")
#define high_vid1 printf("\033#3")
#define graphic printf("\033(0")
#define no_graph printf("\033(B")
#define no_window printf("\033[1;24r")
#define no_att printf("\033[0;22;24;25;27m")
#define cup(row,col) printf("\033[%d;%dH",(row),(col))
#define stbm(top,bot) printf("\033[%d;%dr",(top),(bot))
#define ri printf("\033M")
#define el printf("\033[K")
#define ed0 printf("\033[0J")
#define bar graphic;printf("x");no_graph
#define wipe(row,col) cup(row,col);printf("\033[J")
#define clr wipe(0,0);norm_vid
/* ------------------------------------------------------------------------- *
String equivalents ... Note: _cup() and _stbm() only accept literal args.
* ------------------------------------------------------------------------- */
#define _bel "\007"
#define _esc "\033"
#define _csi "\033["
#define _lscreen "\033[?5h"
#define _dscreen "\033[?5l"
#define _rev_vid "\033[7m"
#define _blink "\033[5m"
#define _under "\033[4m"
#define _bold "\033[1m"
#define _norm_vid "\033[0m"
#define _wide_vid "\033#6"
#define _high_vid2 "\033#4"
#define _high_vid1 "\033#3"
#define _graphic "\033(0"
#define _no_graph "\033(B"
#define _no_window "\033[1;24r"
#define _no_att "\033[0;22;24;25;27m"
#define _cup(row,col) "\033[" #row ";" #col "\110"
#define _stbm(top,bot) "\033[" #top ";" #bot "\162"
#define _ri "\033M"
#define _el "\033[K"
#define _ed0 "\033[0J"
#define _bar "\033(0x\033(B"
#define _wipe_clr "\033[0;0H\033[2J"
#define _clr "\033[0;0H\033[2J\033(B\033[0m\033[1;24r"
/* ------------------------------------------------------------------------- */
、すべてのエスケープシーケンスを含むことvt100.hですvt100、vt220などで、長い、ずっと前です(しかし、ここではこの銀河の中にあります)。
関連する問題
- 1. C#と矢印キー
- 2. フォームと矢印キーのC#フォーカス
- 3. 矢印キーのユニコード?
- 4. SpriteKitの矢印キー
- 5. ページネーション(右矢印キー)
- 6. 矢印キーでナビゲートサムネイルギャラリー
- 7. AIX - デフォルトシェル - 矢印キー
- 8. のVim - キー右矢印
- 9. OS Xの矢印キー
- 10. Autohotkey:矢印キーの再マップ
- 11. リマップ矢印キーをvimの
- 12. C#の上矢印と下矢印のスクロールメソッドを作成
- 13. Selectizeで右矢印キーと左矢印キーを有効にする方法
- 14. JavaFX:矢印キーによるスクロール対フォーカスのトラバーサル
- 15. Javascript:Keydownイベント:矢印キーのキーダウンイベントを防ぐ「上向き」矢印キー? (回答:キーボードゴースト)
- 16. WPF移動矢印キー
- 17. 矢印キー付きAngular2スクロールドロップダウンメニュー
- 18. マウスホイールと矢印キーで `wx.ScrolledPanel`をスクロール
- 19. Cの矢印と点の演算子
- 20. のJavaのKeyListener未登録矢印キー
- 21. android WebView:JavaScriptの矢印キーの処理
- 22. Google Mapsでの矢印キーのナビゲーション
- 23. CLIアプリケーションのコントロールの矢印キー
- 24. ツリービューの矢印キーの移動asp.net
- 25. Readlineライブラリの矢印キーへのバインド
- 26. JComboBoxのヌルIn矢印キーの使用
- 27. 矢印キーと修飾キー付きのNCurses
- 28. linuxのcプログラムに矢印キーを入力するには
- 29. c#/ wpfイベントによる矢印キーのシミュレート
- 30. Eclipseの右矢印キーと左矢印キーを使用してツリーノードを展開します。
[Readline library](https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html)を参照してください。 – alk