strcmp和wcscmp

strcmp和wcscmp,c,strcmp,C,Strcmp,这是吗 与此相同: if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (wcscmp(FileData.cFileName, L".") != 0) && (wcscmp(FileData.cFileName, L"..") != 0) ) 如果您使用strcmpwcscmp,而不是wcscmp?它应该检查名称是否与“.”和“.”(目录搜索)相等(严格) 谢谢 如果

这是吗

与此相同:

if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
    (wcscmp(FileData.cFileName, L".") != 0) &&
    (wcscmp(FileData.cFileName, L"..") != 0) )
如果您使用strcmp
wcscmp
,而不是
wcscmp
?它应该检查名称是否与“.”和“.”(目录搜索)相等(严格)


谢谢

如果我没有弄错,两个例子都做相同的事情。

如果我没有弄错,两个例子都做相同的事情。

在C中,“true”被定义为“not zero”。“假”定义为“零”。所以是的,他们是一样的

不过,对于返回非基元类型的方法,一定要小心;在C++中,运算符重载可以使“!=0”实际上不与零进行比较:P.,这里没有问题。 另外,如果没有放在括号中,请确保理解操作顺序。

在C中,“true”定义为“not zero”。“假”定义为“零”。所以是的,他们是一样的

不过,对于返回非基元类型的方法,一定要小心;在C++中,运算符重载可以使“!=0”实际上不与零进行比较:P.,这里没有问题。
另外,如果你没有把括号括起来,请确保你理解了操作顺序。

除了你第二个例子中缺少的偏执之外,我找不到任何其他区别——我是瞎了还是你忘了什么?编辑:啊,现在我看到了。
=0
也被省略:)@rubenb:那么问题不是关于wcscmp,而是关于
if
语句。wcscmp没有什么特别之处;它只是一个返回int的函数。@Billy:MSDN说它可以返回比0和1多得多的值,我只是想确保我没有错过任何一个特殊情况。这让我想知道-
wcscmp()
只是
strcmp()
对于宽字符串,返回相同的:)除了第二个示例中缺少的偏执,我看不出其他任何区别-我是瞎了还是你忘了什么?编辑:啊,现在我看到了。
=0
也被省略:)@rubenb:那么问题不是关于wcscmp,而是关于
if
语句。wcscmp没有什么特别之处;它只是一个返回int的函数。@Billy:MSDN说它可以返回比0和1多得多的值,我只是想确保我没有遗漏任何角点。这就是为什么我想知道-
wcscmp()
只是
strcmp()
用于宽字符串并返回相同的:)
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
    wcscmp(FileData.cFileName, L".") &&
    wcscmp(FileData.cFileName, L"..") )