我试图比较两个字符串在我的c程序与一个.csv文件输入。一切工作正常,当我运行它在我的本地主机作为一个cgi程序。但上传到linux服务器上,它不能正确比较。输出文件显示,尽管是相同的值,它的比较输出是不同的。我认为linux服务器是运行C99编译器的C。我只粘贴了产生问题的代码。如果你想看看完整的代码,请点击以下链接https://github.com/iaminhri/CGI-Programming/blob/main/checkpass2.c以下代码。我被这个卡住了:')...如果你需要任何其他信息,请让我知道。
int k = 0;
for(; k < lineCounter; k++){
char *trimmed = strtok(pwd[k], "\n ");
doesUsrExists = strcmp(arr[0], usr[k]);
doesPwdExists = strcmp(arr[1], pwd[k]);
printf("<p> UserExists: %s -- PwdExists: %s", usr[k], pwd[k]);
printf("<p> UserExists: %d -- PwdExists: %d", doesUsrExists, doesPwdExists);
if(doesPwdExists == 0 && doesUsrExists == 0){
bothExists = 0;
break;
}
else
bothExists = 1;
doesUsrExists = 0;
doesPwdExists = 0;
}
printf("<p> UserExists: %d", bothExists);
if(bothExists == 0){
printf("<h1>Your Password Matches</h1>");
}
else{
printf("<h1>Wrong username or password</h1>");
}
printf("</body></html>");
即使字符串匹配,strcmp(arr[1], pwd[k]);
也会返回不同的值。
输出如下:
1条答案
按热度按时间inn6fuwd1#
如果两个字符串都以空字符结束,strcmp将正确工作。如果它们缺失,则比较将失败,并且您可能会破坏系统。