如何检查数组的内容?

tru*_*ace 5 c arrays

我想检查char数组是否包含所有'0's.

我试过这个,但它不起作用:

char array[8];
// ...
if (array == {'0','0','0','0','0','0','0','0'})
   // do something
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Iha*_*imi 7

这个

array == {'0','0','0','0','0','0','0','0'}
Run Code Online (Sandbox Code Playgroud)

肯定是错的,肯定不会编译.

您可以memcmp()像这样比较值

int allZeroes = (memcmp(array, "00000000", 8) == 0);
Run Code Online (Sandbox Code Playgroud)


Ere*_*ith 6

事实上

array == {'0','0','0','0','0','0','0','0'}
Run Code Online (Sandbox Code Playgroud)

是不允许的,你不能比较这样的数组.相反,在循环中执行:

int row_is_all_zeroes(char arr[8])
{
  for (int i = 0; i < 8; i++)
  {
    if (arr[i] != '0')
      return 0;
  }
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

如果您想要更优雅的解决方案,请查看iharob或Sourav的答案


Sou*_*osh 5

{'0','0','0','0','0','0','0','0'}
Run Code Online (Sandbox Code Playgroud)

被称为(并用作)括号括起初始化列表.这不能用于任何地方的比较.

您可以用优雅的方式memcmp()实现这一目标.

伪代码

if (!memcmp(array, "00000000", 8))
{
   break;
}
Run Code Online (Sandbox Code Playgroud)