首先使用C UNIX strcmp是错误的,所有其他时间都是正确的
嘿所有我在微软VS上写了一些代码,假设将输入的密码与存储在数据库中的密码进行比较并返回批准或拒绝...
它在windows上运行得非常好,但在转换为UNIX(使用eclipse)之后发生了一件有趣的事情 - 总是,第一次调用此函数时不会返回已批准的值,但是使用完全相同的params再次调用该函数根据需要批准......
在调试之后我很确定问题出在“strcmp”中,在第一次运行时返回false,在完全相同的参数上的所有其他运行中返回true。
任何人都知道可能是什么问题?
命令的示例:
添加jt 111
//将密码添加到DB
登录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");
}
没有找到相关结果
已邀请:
2 个回复
捅瓶啡
的调用会返回一个指向缓冲区的指针,该缓冲区在
函数返回时不再有效。这意味着你正在遇到未定义的行为,在某些情况下会变得幸运,而在其他情况下会变得不幸。 将代码发布到
。
死狸蔽垂藐
另外,谁为函数Md5FromString()分配内存?你能发送Md5FromString()的代码吗? 干杯, 圣保罗