strcmp 比较 LPCTSTR 和字符串
-
10-12-2019 - |
题
我正在尝试在我的 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
已验证。我尝试过 strcmp
和 lstrcmp
但结果是一样的。
有人可以告诉我我做错了什么吗?
谢谢。
解决方案
strcmp
和家人回归 0
来表明字符串是相等的。你的逻辑根本就是错误的。
您应该像这样编写测试:
if (strcmp(av[i], "value")==0)
顺便说一句,另外两个 if
陈述,比较 _T("value")
和 (LPTSTR)"value"
编译 ANSI 时没问题,但编译 Unicode 时则不正确。当编译 Unicode 时, _T("value")
将计算为宽字符串,因此不是有效的参数 strcmp
. 。那是一个编译错误。和 (LPTSTR)"value"
也会出现编译错误,因为 LPTSTR
将是一个宽字符串。但演员阵容也完全是假的。不管怎样,我只是为了完整性而提到这些问题,但我确实理解这些额外的 if 语句是在您尝试调试根本问题时添加的。
不隶属于 StackOverflow