为什么strcmp()不能正常工作呢? C ++

时间:2014-03-05 09:16:56

标签: c++ strcmp

由于某种原因,strcmp()没有按原样返回0。这是代码:

#include <iostream>
#include <ccstring>

int main()
{
      char buffer[2];
      buffer[0] = 'o';

      char buffer2[2];
      char buffer2[0] = 'o';

      cout<<strcmp(buffer, buffer2);
}

谢谢!

2 个答案:

答案 0 :(得分:6)

C字符串零终止。

你的字符串不是。这只是未定义的行为。任何事情都可能发生。

答案 1 :(得分:0)

在比较之前先终止字符串。

    #include <iostream>
    #include <ccstring>

    int main()
    {
          char buffer[2];
          buffer[0] = 'o';
          buffer[1] = 0;  <--

          char buffer2[2];
          buffer2[0] = 'o';
              buffer2[1] = 0;  <--

          cout<<strcmp(buffer, buffer2);
    }

编辑:(2014年3月7日)
附加字符串初始化:

    int main()
    {
          //---using string literals.
          char* str1  = "Hello one";   //<--this is already NULL terminated
          char str2[] = "Hello two";  //<--also already NULL terminated.

          //---element wise initializatin
          char str3[] = {'H','e','l','l','o'};  //<--this is not NULL terminated
          char str4[] = {'W','o','r','l','d', 0}; //<--Manual NULL termination

    }