在C中比较""和""

Kur*_*aum 2 c string compare strcmp

所以我有以下测试代码:

#include <string.h>
#include <stdio.h>

int main(int argc, char* argv[]){
  int retVal = strcmp("", "");
  printf("%d\n", retVal);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

对我来说,它似乎总是打印出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;
}
Run Code Online (Sandbox Code Playgroud)

我想确保doOperation中的内容能够正确进行.请注意,这只是一个例子.在我的doOperation函数中,我不会真正知道它的值toCompare.

Set*_*gie 8

如果两个字符串的NULL终止符之前的所有字符完全相同,则字符串等于另一个字符串.由于""没有字符,因此与之相比,它符合该定义"".