问题在函数中if(s[i]>='A'&&s[i]<='Z')出现报错,字符串越界,但我检查后没找到越界问题
#include <stdio.h>
#include <string.h>
#define N 100
int Judge(char s[N],int n);
int main()
{
char a[N];
int n, num;
printf("Please input the password!\n");
gets(a);
n = strlen(a);
num = Judge(a, n);
if(num == 1)
{
printf("%d Best", n);
}
else if(num == 2)
{
printf("%d Strong", n);
}
else if(num == 3)
{
printf("%d Medium", n);
}
else if(num == 4)
{
printf("%d Weak", n);
}
return 0;
}
int Judge(char s[N],int n)
{
int i, num = 0, judge = 0;
int a = 0, b = 0, c = 0, d = 0;
char e[N], f[N], g[N], h[N];
for(i = 0; i < n-1; i++)
{
if(s[i] >='A'&&s[i] <='Z')
{
e[a] == s[i];
a++;
}
else if(s[i] >='a')
{
f[b] = s[i];
b++;
}
else if(s[i] >='0'&&s[i] <='9')
{
g[c] = s[i];
c++;
}
else if(s[i] =='@'||s[i] =='-'||s[i] =='_'||s[i] == '#'||s[i] =='~')
{
h[d] = s[i];
d++;
}
}
if(a > 0)
{
num++;
}
if(b > 0)
{
num++;
}
if(c > 0)
{
num++;
}
if(d > 0)
{
num++;
}
if(num = 4&&n >= 16&&a > 1&&b > 1&&c > 1&&d > 1)
{
for(i = 0; i < a-1; i++)
{
if(e[i+1] == e[i])
{
judge++;
break;
}
}
for(i = 0; i < c-1; i++)
{
if(f[i+1] == f[i])
{
judge++;
break;
}
}
for(i = 0; i < c-1; i++)
{
if(g[i+1] == g[i])
{
judge++;
break;
}
}
for(i = 0; i < d-1; i++)
{
if(h[i+1] == h[i])
{
judge++;
break;
}
}
if(judge == 4)
{
return 1;
}
}
else if(n >= 10&&num == 4&&!(a > 1&&b > 1&&c > 1&&d > 1))
{
return 2;
}
else if(n >= 8&&num >= 3)
{
return 3;
}
else
{
return 4;
}
}