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