4

大文字、小文字、数字が少なくとも1つになるまでループし続けるにはどうすればよいですか?

行き詰まった、本当に行き詰まった...

char password[100][15];
i=1;
     printf("Password [3..10]: ");
        gets(password[i]);
        while (strlen(password[i])>10 || strlen(password[i])<3 || ) {   
        do{
        printf("  Password must contain at least 1 uppercase, 1 lowercase, and 1 number\nPassword [3..10]: ");
        gets(password[i]);
        } while (strlen(password[i])>10 || strlen(password[i])<3 );
4

5 に答える 5

0

ctype.hヘッダーを見てください。すべての条件 (大文字、小文字、数字) が満たされるまで、パスワードのすべての文字を調べます。パスワード文字列の最後まで到達し、いずれかの条件が満たされない場合、パスワードが間違っています。

于 2013-10-29T15:03:59.190 に答える
0

ASCII テーブル内の文字位置を確認する簡単な方法かもしれません。すべての文字は、大文字の場合は 65 から 90 までの数字で、小文字の場合も同様に確認できます。

数値については、標準の c ライブラリの atoi() 関数を使用できます。

または、ctype.h の islower()、isupper()、または isdigit() の関数を使用することもできます。

于 2013-10-29T15:05:29.640 に答える