0

我试图在我的 C 程序中比较一个字符串和一个 LPCTSTR。

这是我到目前为止所做的(代码已被简化为仅存在问题的部分):

DWORD main(DWORD ac, LPCTSTR *av)
{
    DWORD cpt = 1;

    while (++i < ac)
    {
        if (strcmp(av[i], "value"))
            printf("1 : OK\n");
        else if (strcmp(av[i], _T("value")))
            printf("2 : OK\n");
        else if (strcmp(av[i], (LPCTSTR)"value"))
            printf("3 : OK\n");
    }
    return EXIT_SUCCESS;
}

当我使用第一个参数“value”执行我的程序时,似乎没有一个if经过验证。我试过了strcmplstrcmp但结果是一样的。

有人可以告诉我我做错了什么吗?

谢谢。

4

1 回答 1

3

strcmp和family返回0表示字符串相等。您的逻辑完全是错误的方法。

你应该这样写测试:

if (strcmp(av[i], "value")==0)

顺便说一句,与和比较的其他两个if语句在为 ANSI 编译时很好,但在为 Unicode 编译时是不正确的。为 Unicode 编译时,将评估为宽字符串,因此不是 . 那是编译错误。并且也将是一个编译错误,因为它将是一个宽字符串。但演员阵容也完全是假的。无论如何,我只是为了完整性而提到这些问题,但我明白这些额外的 if 语句是在您尝试调试根本问题时添加的。_T("value")(LPTSTR)"value"_T("value")strcmp(LPTSTR)"value"LPTSTR

于 2012-03-09T12:32:25.860 回答