在Linux服务器上运行时,C中的strcmp()未给出准确值

jaql4c8m  于 2022-12-03  发布在  Linux
关注(0)|答案(1)|浏览(133)

我试图比较两个字符串在我的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]);也会返回不同的值。
输出如下:

inn6fuwd

inn6fuwd1#

如果两个字符串都以空字符结束,strcmp将正确工作。如果它们缺失,则比较将失败,并且您可能会破坏系统。

相关问题