嘿,我在 microsoft VS 上写了一些代码,假设将输入的密码与存储在数据库中的密码进行比较并返回批准或拒绝......它在 Windows 上运行得非常好,但在转换为 UNIX(使用 eclipse)之后发生了一件有趣的事情 -总是,第一次调用此函数时不会返回批准的值,但再次调用具有完全相同的参数的函数会返回批准的......根据需要。调试后,我很确定问题出在“strcmp”中,它在第一次运行时返回 false,在所有其他运行时返回 true,参数完全相同。
任何人都知道可能是什么问题?
命令示例: add jt 111 // 将密码添加到数据库
登录 jt 111
拒绝
登录 jt 111
得到正式认可的
void login_helper(char *user, char *password){
int found = 0;
int i;
for (i=0 ; i<space ; i++){
if (strcasecmp(data[i].name,user) == 0) {
found = 1;
if (strcmp(data[i].hash ,Md5FromString(password)) == 0)
{
printf("approved.\n");
break;
}
else {
printf("denied.\n");
break;
}
}
}
if (found == 0) printf("denied.\n");
}