入力文字列がパスワードとして適切か判定したかったのですが・・・
「あれ?なんで通らないんだ?」
・・・
「アッーーー!」
もしこれを本番でやらかしていたら、確実に人権を失いますね・・・
(コメントは投稿用に付け足しました)
#include <stdio.h> #include <ctype.h> int main(void) { char password[32]; int i; int check=0; scanf("%s",password); for(i=0;password[i];i++) { if(isalpha(password[i]))check|=1; /* 数字が含まれているか判定したい */ if(isupper(password[i]))check|=2; /* 大文字英字が含まれているか判定したい */ if(islower(password[i]))check|=4; /* 小文字英字が含まれているか判定したい */ } printf("%sVALID\n",(i>=6 && check==7)?"":"IN"); return 0; }
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
c言語ってメモリの割り当てが厄介だから内部初期化は必須だよね
1文字以上20文字以内と書いてあるので今回の場合は大丈夫ではないのでしょうか?
・数値【でなかった】ら1のビットフラグON
・大文字だったら2のビットフラグON
・小文字だったら4のビットフラグON
競技プログラミングや自分専用のツールなら入力要件に完全依存でもいいけど、実用的なプログラムを書く場面では、悪意やバグによる異常入力も考えておかないといけないのは間違いない。
scanf のフォーマットで ”%s” は危険。
コメント投稿には、twitter認証が必要です。
Twitter認証
長い長いパスワードでバッファオーバーラン?