所以我有以下测试代码:
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]){
int retVal = strcmp("", "");
printf("%d\n", retVal);
return 0;
}
而对我来说,它似乎总是打印出 0,即“”和“”总是彼此相等。但我很好奇。这是 strcmp 保证的东西,还是有可能因实施而异?也许我只是偏执狂,但我已经研究了足够多的奇怪系统来了解不同实现的危险。
更新:我决定澄清以证明我的偏执。我在我的程序中真正做的是更类似于这个:
#include <string.h>
#include <stdio.h>
int doOperation(const char* toCompare){
//do stuff in here
int compResult = strcmp(toCompare, "");
//do more stuff depending on compResult
}
int main(int argc, char* argv[]){
const char* myString = "";
doOperation(myString);
return 0;
}
我想确保 doOperation 中的事情能够正确进行。请注意,这只是一个示例。在我的 doOperation 函数中,我实际上不会知道toCompare
.