2

「パスワードプロンプト」のCコードを書いています。ユーザーが入力するすべての文字に対して * を表示する必要があります。しかし、getch() ではサポートされていません。ということで、システムコールをやってみました。

for(i=0;i<5;i++)
{
    system("stty -echo");
    scanf("%c", &a[i]);
    system("stty echo");
    printf("*");
}

エコーをオフにして、文字と表示を取得しようとしました * エコーを有効にします。しかし、scanf は \n まで続くことがわかっています。そのため、文字を取得したらすぐに * を表示できません。誰か助けてください。また、他の良い方法を教えてください。

4

1 に答える 1

0

エコーなしでパスワードを入力するのは比較的簡単ですが、星を一度に 1 文字ずつ表示するのは簡単ではありません (バックスペース (または最悪の場合、矢印キー) をサポートしているときにこれを行うのはさらに困難です)

最初のステップは、「ターミナルを RAW モードに設定」して、「フルラインを待つ」動作を無効にすることです。

于 2013-09-17T09:53:24.057 に答える