-1

私はしばらくこれにいて、本当にいくつかの助けを使うことができました。パスワードプログラムを作成していますが、関数の1つで、先頭と末尾の間の文字に大文字が含まれているかどうかがテストされます。これは私が試したことです:

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");
}
4

1 に答える 1

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;
}

これはあなたが必要なものですか?

しかし、ポインタを使用する必要がありますか?インデックスを使用すると、より簡単になる可能性があります。

于 2013-03-06T20:48:11.127 に答える