我有一个输入来自UART。
uint8_t uartRX_data[UART_RX_BUF_SIZE]="";
我需要把这些数据传递给一个函数。在这个函数中,我希望将它与预定义的字符串进行比较,例如:
char RESP_OK[] = "OK";
char RESP_ERROR[] = "ERROR";
char RESP_FAIL[] = "FAIL";
最简单的方法是什么?
编辑:我的问题只是关于数据比较和数据传递到一个函数。
发布于 2019-05-03 10:35:17
只要uartRX_data
中的字符串为NULL终止,您就应该能够使用strcmp
,如下所示:
if (strcmp((const char *)uartRX_data, RESP_OK) == 0)
{
// handle OK
}
else if (strcmp((const char *)uartRX_data, RESP_ERROR) == 0)
{
// handle ERROR
}
else if (strcmp((const char *)uartRX_data, RESP_FAIL) == 0)
{
// handle FAIL
}
else
{
// handle unknown response
}
发布于 2019-05-03 13:54:28
char
、signed char
、unsigned char
、int8_t
和uint8_t
之间的转换大多被认为是安全的。这些是字符类型,有各种特殊的例外,使它们比其他类型更加“粗糙”。
具体来说,字符类型:
这意味着您可以在不同字符类型之间进行各种形式的任意转换。除了少数例外:
const
或volatile
限定符是危险的。因此,从uint8_t*
转换到char*
并将数据作为另一种类型(char*)uartRX_data
取消引用是安全的。特别是,如果您知道uint8_t
数组只包含有效的7位字符,而MSB从不设置,并且在数组的末尾为空终止。
https://stackoverflow.com/questions/55967430
复制相似问题