1

ユーザーからパスワードを入力し、パスワードをユーザーが入力した文字列として保存するプログラムを作成しようとしていましたが、表示には getch() 関数を使用してアスタリスクを含める必要があります。私はこれにだまされています。誰かが助けてくれたら?

4

1 に答える 1

2

Windowsで実行していて、エンコーディングがASCIIであると仮定すると、
これを試してください:

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
    char buffer[256] = {0};
    char password[] = "password";
    char c;
    int pos = 0;

    printf("%s", "Enter password: ");
    do {
        c = getch();

        if( isprint(c) ) 
        {
            buffer[ pos++ ] = c;
            printf("%c", '*');
        }
        else if( c == 8 && pos )
        {
            buffer[ pos-- ] = '\0';
            printf("%s", "\b \b");
        }
    } while( c != 13 );

    if( !strcmp(buffer, password) )
        printf("\n%s\n", "Logged on succesfully!");
    else
        printf("\n%s\n", "Incorrect login!");
    return 0;
}
于 2013-06-16T07:03:58.520 に答える