我想检查char数组是否包含所有'0'
s。
我试过这个,但它不起作用:
char array[8];
// ...
if (array == {'0','0','0','0','0','0','0','0'})
// do something
我该怎么做?
答案 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;
}