我已经有一段时间了,可以真正使用一些帮助。我正在制作一个密码程序,其中一个函数测试开头和结尾之间的字符是否有一个大写的中间字母。这就是我的尝试:
int hasMiddleUpper(char *pass) {
int test=0, testu=0, testl=0, count;
char c;
while (c = *pass++) {
test++;
}
pass = pass - test + 1;
while (c = *pass++) {
if ( isupper( c )) {
testu=1;
}
}
pass--;
while (c = *pass++) {
if ( isupper(c )) {
testl=2;
}
}
count = testu + testl;
if (count==1) {
return 1;
}
else {
return 0;
}
}
int pwstrength( char *pass )
{
int test, test1,test2, test3, result;
test= hasUpperAndLower( pass );
test1 = hasAlphaDigits(pass);
test2 = hasEightOrMore(pass);
test3 = hasMiddleUpper(pass);
result = test + test1 + test2 + test3;
return result;
}
int main( void ) {
int a;
char *p= "Pass3wordD";
a= pwstrength( p );
printf( "%d \n", a );
system("Pause");
}
答案 0 :(得分:3)
int hasMiddleUpper(char *pass)
{
char c;
if ( ! (pass && *pass) ) return 0;
while (c = *(++pass)) // dont test first
{
if (isupper(c) && *(pass+1) ) return 1; // only if not the last
}
return 0;
}
这是你需要的吗?
但是,你必须使用指针吗?索引可以更简单。