char buf[] = {0x01, 0x08, 0x00, 0x00, 0xA5, 0x37, 0xbe, 0xda, 0}; char buf2[] = {0x01, 0x08, 0x00, 0x00, 0xA5, 0x37, 0xda, 0xbe, 0}; if (strcmp(buf, buf2) !=0) { ... }
strcmp的结果会是非零?条件判结果断会是true?
错误,strcmp的结果是0,条件判断的结果会是false。
为什么会这样呢,暂时没有研究strcmp 和 strncmp的实现原理,反正用它来比较出现了意料之外的情况。
所以当字符数组里面的值当纯数值使用时,应该自己写一个比较函数,如下:
bool bufcmp(const char *ccL, const char *ccR, size_t sz) { for (size_t sztp=0; sztp<sz; sztp++) { if ( ccL[sztp] != ccR[sztp] ) { return false; } } return true; }