我正在尝试在我的 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;
}

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

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

谢谢。

有帮助吗?

解决方案

strcmp 和家人回归 0 来表明字符串是相等的。你的逻辑根本就是错误的。

您应该像这样编写测试:

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

顺便说一句,另外两个 if 陈述,比较 _T("value")(LPTSTR)"value" 编译 ANSI 时没问题,但编译 Unicode 时则不正确。当编译 Unicode 时, _T("value") 将计算为宽字符串,因此不是有效的参数 strcmp. 。那是一个编译错误。和 (LPTSTR)"value" 也会出现编译错误,因为 LPTSTR 将是一个宽字符串。但演员阵容也完全是假的。不管怎样,我只是为了完整性而提到这些问题,但我确实理解这些额外的 if 语句是在您尝试调试根本问题时添加的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top