如何检查数组的内容?

时间:2015-05-27 12:00:58

标签: c arrays

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

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

char array[8];
// ...
if (array == {'0','0','0','0','0','0','0','0'})
   // do something

我该怎么做?

3 个答案:

答案 0 :(得分:7)

array == {'0','0','0','0','0','0','0','0'}

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

您可以将这些值与memcmp()进行比较

int allZeroes = (memcmp(array, "00000000", 8) == 0);

答案 1 :(得分:6)

实际上

array == {'0','0','0','0','0','0','0','0'}

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

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

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

答案 2 :(得分:5)

{'0','0','0','0','0','0','0','0'}

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

您可以使用memcmp()优雅方式实现此目标。

伪代码

if (!memcmp(array, "00000000", 8))
{
   break;
}