2011-07-14 14 views
0

アセンブリ言語を使用して印刷およびスキャンするライブラリ関数をいくつか作成しています。 データを入力しようとしていますが、バックスペースボタンを押すとカーソルが後方に移動しますが(何も削除しない)、バックスペースボタンが正しく機能するようにしたい(つまり、前の文字を削除する)Cでバックスペースプログラムを作る方法は?

そのためのプログラムはありますか。私を助けてください。

+0

キープレスを収集している場合は、自分で削除を処理する必要があります。スキャンfを使用している場合は、それを処理します。コードを追加し、あなたが試したことを示してください。 – BugFinder

答えて

1

単純に、やや面白い方法ですが、コンソールにバックスペース文字(\b)を書き込むだけです。例えば

#include <stdio.h> 

int main() 
{ 
    printf("Testing"); 
    fflush(stdout); 
    printf("\b\b\b"); 
    fflush(stdout); 

    return 0; 
} 

しかし、事のこのタイプは本当にあなたの端末ドライバによって処理されなければなりません。あなたは、質問でどのオペレーティングシステムをターゲットにしているかは言及していません。

+0

ありがとうございます。バックスペースボタンが正常に機能します。私はバックスペースボタンを押したときに前の文字を削除するコードを入力します。 – Amk

0

出力バックスペース、スペース、バックスペース:

int c = getchar(); 
if (c == '\b') 
{ 
    printf("\b \b"); 
    fflush(stdout); 
} 

バックスペースのユーザーのプレスはすでに、端末ドライバによってエコーされた場合には、ちょうどこの操作を行います。

int c = getchar(); 
if (c == '\b') 
{ 
    printf(" \b"); 
    fflush(stdout); 
} 
+1

バックスペース、スペース、バックスペースのポイントとは何ですか?それはあまりにも多くの2ステップのようです。 –

+0

バックスペースの前にユーザーが押した文字は、その文字の表示を停止したいので、代わりにスペースを表示する必要があります。それは2つのステップが多すぎますか?この手順を実行しても問題が解決されない場合があります。 –

0

ウルがそうするならばあなたにabtコンソールの1つを教えてください。 コンソールには2種類のコンソールがあり、1つは制御文字を認識できます。 アクティブコンソール(標準モード)と呼ばれ、行コンソールを呼び出さないコンソールです。 明らかにunixの端末を使用している場合、uはアクティブモードのコンソール としてデフォルトを与えられますが、いくつかのコマンドを実行することで行モードに設定できます。

関連する問題