我使用下面的代碼packetbuffer比較字符串的一部分比較字符串,1個時字符串包含另一個字符串
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
!strcmp(packetBuffer, "turn on light")
但是我怎麼可以用它來把它比作一個字符串應該packetbuffer = testing1234和要比較的字符串是否等於「測試」,最後4位數字沒有?
我使用下面的代碼packetbuffer比較字符串的一部分比較字符串,1個時字符串包含另一個字符串
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
!strcmp(packetBuffer, "turn on light")
但是我怎麼可以用它來把它比作一個字符串應該packetbuffer = testing1234和要比較的字符串是否等於「測試」,最後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
是有用的。
長度也被檢查,以確保「測試」後確切地有4個字符(不只是數字)。
if (strlen(packetBuffer) == 11 && strncmp(packetBuffer, "testing", 7) == 0) {
// they are equal
}
請注意,這是不是很好的代碼,因爲使用了一些神奇的數字。
這看起來並不好,因爲如果'packetBuffer'是'XXtestingXX',它不是'測試(大約4位數)',它就成爲真。 – MikeCAT
@MikeCAT:目前尚不清楚OP是否要求子字符串位於緩衝區的起始位置,但我已經更新了答案以涵蓋這種可能性。 –
第二個應該是'strstr(packetBuffer,「testing」)== packetBuffer',而不是'!='。 – MikeCAT