我想我的代码可以完全正常使用strcmp或简单地在C中使用==来比较2个char数组.任何人都可以证明使用strcmp而不是==的原因;
解决方法
strcmp比较实际的C字符串内容,而在两个C字符串之间使用==询问这两个字符串指针是否指向相同的位置.
如果我们有一些C字符串定义如下:
char string_a[] = "foo"; char string_b[] = "foo"; char * string_c = string_a;
strcmp(string_a,string_b)== 0将返回true,而string_a == string_b将返回false.只有在使用==“比较”string_a和string_c时才会返回true.
如果要比较两个C字符串的实际内容,而不是它们是否只是彼此的别名,请使用strcmp.
旁注:如果您使用C而不是C作为问题标签显示,那么您应该使用std :: string.例如,
std::string string_d = "bar"; std::string string_e = "bar";
然后string_d == string_e将返回true. string_d.compare(string_e)将返回0,这是strcmp的C版本.