当 1 个字符串包含另一个字符串的一部分时比较字符串
comparing strings when 1 string contains part of the other string
我正在使用以下代码将 packetbuffer 与字符串进行比较,
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
!strcmp(packetBuffer, "turn on light")
但是,如果 packetbuffer = testing1234 和要比较的字符串等于 "testing",而没有最后 4 位数字,我该如何将其与字符串进行比较?
您要找的函数是strstr:
if (strstr(packetBuffer, "testing") != NULL)
{
// packetBuffer contains "testing"
// so do something...
}
注意:如果您需要在字符串的开头测试子字符串,那么您可以这样做:
if (strstr(packetBuffer, "testing") == packetBuffer)
{
// packetBuffer starts with "testing"
// so do something...
}
如果你会使用标准C库,strncmp
就很有用。
还检查长度以确保在 "testing".
之后恰好有 4 个字符(不仅仅是数字)
if (strlen(packetBuffer) == 11 && strncmp(packetBuffer, "testing", 7) == 0) {
// they are equal
}
请注意,这不是很好的代码,因为使用了一些幻数。
我正在使用以下代码将 packetbuffer 与字符串进行比较,
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
!strcmp(packetBuffer, "turn on light")
但是,如果 packetbuffer = testing1234 和要比较的字符串等于 "testing",而没有最后 4 位数字,我该如何将其与字符串进行比较?
您要找的函数是strstr:
if (strstr(packetBuffer, "testing") != NULL)
{
// packetBuffer contains "testing"
// so do something...
}
注意:如果您需要在字符串的开头测试子字符串,那么您可以这样做:
if (strstr(packetBuffer, "testing") == packetBuffer)
{
// packetBuffer starts with "testing"
// so do something...
}
如果你会使用标准C库,strncmp
就很有用。
还检查长度以确保在 "testing".
if (strlen(packetBuffer) == 11 && strncmp(packetBuffer, "testing", 7) == 0) {
// they are equal
}
请注意,这不是很好的代码,因为使用了一些幻数。