在下面的代码中,我期待一些奇怪的行为(如无限循环),因为我没有提供空终止字符串作为 strcmp() 函数的输入。

#include <stdio.h>

int main()
{
  char string1[20];
  char string2[20] = {'H','e','l','l','o',};

  strcpy(string1, "Hello");
 // strcpy(string2, "Hellooo");
  printf("Return Value is : %d\n", strcmp( string1, string2));

  return 0;
}

输出是:
 Return Value is : 0

为什么它显示两个字符串相等?

我的猜测是当我初始化数组 (string2)rest 元素时填充为零。但由于数组是本地的,这不应该是这种情况。

最佳答案

如果数组或结构的初始值设定项仅提供数组或结构的部分数据,则数组或结构的其余部分将设置为 0string2 就是这种情况。

关于c - 为什么 strcmp() 返回 '0' 虽然我没有提供空终止字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24155830/

10-16 20:45