2016-08-13 6 views
-2

パスワードには文字と数字が必要です。ここでは、コードです:Cのパスワード強度検出器が機能しない

#include <ctype.h> 
int main() 
{ 
    char password; 

    printf("Please enter a password.\n"); 
    scanf("%c", &password); 

    if ((isalpha (password) && isdigit(password))){ 
     printf("Your password is strong!\n"); 
    } else { 
    printf("Your password is weak!"); 
    } 
    return 0; 
} 

は、しかし、私はそれをコンパイルするとき、それは常に印刷し、私は文字と数字の両方を入力しても「あなたのパスワードは弱いです」。どうしましたか?

+0

? @ JonathonReinhartの回答に記されているように、テストは常に1文字で失敗します。同時に文字と数字にすることはできません。より正確には、C言語ではなく英語で達成したいことを説明してください。 –

+0

あなたのアプリケーションは最初に入力した文字( 'scanf("%c "')を取り、 'isalpha()'と 'isdigit() '。あなたは、入力されたパスワード全体を読み込み、少なくとも1つの文字と1つの数字があるかどうかを確認するためにアプリケーションを修正したいと思います。 – RhinoDevel

+0

[参照する方法](http://stackoverflow.com/help/how -to-ask)これは、宿題をデバッグする要求のように感じます。 – zhon

答えて

4

あなたは唯一のユーザーから一文字読んでいる:その単一の文字が数字文字の両方にすることはできませんので

char password; 

printf("Please enter a password.\n"); 
scanf("%c", &password); 

を、最初の条件は常に失敗します。

文字列を読む必要があります。次に、ループを使用して文字列内のすべての文字を繰り返し、必要なさまざまな種類の文字が存在するかどうかを確認します。 ctype.hの関数は、文字列ではなく単一の文字を取ります。文字配列やポインタを渡すと、コンパイルに失敗します。

1

機能isalphaおよびisdigitは、char配列ではなく単一文字で動作します。

1

%cは、1文字のみを読み取ります。 %sは文字列の読み取りに使用されます。あなたは配列と読み取り文字列にパスワードを変更する必要があります。配列内の各文字を分割し、配列に文字と数字の両方が含まれているかどうかを確認することができます。

0

あなたのコードは、パスワードの強さを得るのには完璧ではありません。より多くのパスワード特性を定義する必要があります。私はあなたが何らかの条件を満たす必要があるようなコードを開発しました。それらは:

  • パスワードは8桁の最小長でなければなりません。
  • 少なくとも1つの大文字と1つの小文字を含む必要があります。

コードは以下の通りです:これは役立つ

#include<stdio.h> 
#include<ctype.h> 
int main() 
{ 
char arr[15];int count=0,i;int lower=0,upper=0;int ck=0; 
gets(arr); 

for(i=0;arr[i]!='\0';i++){ 
    count++; 
} 

for(i=0;arr[i]!='\0';i++){ 
     if(isupper(arr[i])){ 
      upper++; 
     } 
} 

for(i=0;arr[i]!='\0';i++){ 
     if(islower(arr[i])){ 
      lower++; 
     } 

} 
for(i=0;arr[i]!='\0';i++){ 
     if(isspace(arr[i])){ 
      ck=0; 
      break; 
     } 

} 

if(count>=8&&upper>=1&&lower>=1){ 

     ck=1; 
} 
else{ 
    ck=0; 
} 


if(ck==1) 
    printf("strong password"); 
else if(ck==0) 
    printf("weak password"); 

} 

希望...まさに質問はどのようなものです:)

関連する問題