在这里,我需要一些帮助来理解字符串。我有一个buff,它被冲洗然后传递给UART函数。此缓冲区现在已更新,并且保留了一些值。我需要检查缓冲区的第5个字节。令我困惑的是,我在下面的代码中写道。 请看一下。
int main()
{
char buff[8];
memset(buff,0,8);
/*
This buff is used by some UART function, and hence is updated by UART
This buff now holds some data. And now, I need to check the 5th byte it is holding.
*/
if(buff[4]==0x04) //will this work? or I need to use if(strcmp(buff[4],0x04)) ???
{
//Do some functionality, for an example
printf("True");
}
else
printf("False");
return 0;
}
答案 0 :(得分:4)
您的代码是正确的,是的。
只有当您知道strcmp()
字符后跟'\x04'
字符串终止符时,才能使用'\0'
。由于它看起来像二进制数据,因此使用strcmp()
会非常奇怪。
你不以任何方式比较“字符串”,所以使用==
很好。在C中,“字符串”表示“a(指向a的指针)0端接的char
数组”。这不是你要处理的,所以任何关于如何处理字符串的经验教训都不适用。