【发布时间】:2013-06-05 09:44:22
【问题描述】:
在这里,我需要一些帮助来理解字符串。我有一个 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;
}
【问题讨论】:
-
你需要检查缓冲区的第5个字节并与什么进行比较?字符 0x04、字符 '4' 还是其他?
-
其十六进制值 4。即 0x04。没有任何字符
-
您的代码是正确的,如答案中所述。但是请注意,注释掉的代码非常错误—— strcmp(buff[4],0x04) 会将 0x04 视为指针,而不是数据,并且很可能会崩溃。
-
你的代码很好,如果你确定你已经读取了 5 个字节,那么 buff[4] 是有效的。当然,也可以检查前 4 个字节,但那是另一回事了。
-
@svk:非常感谢先生。现在明白了
标签: c string if-statement strcmp