2015-09-30 169 views
3

我使用下面的代碼packetbuffer比較字符串的一部分比較字符串,1個時字符串包含另一個字符串

char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; 
!strcmp(packetBuffer, "turn on light") 

但是我怎麼可以用它來把它比作一個字符串應該packetbuffer = testing1234和要比較的字符串是否等於「測試」,最後4位數字沒有?

回答

2

你正在尋找的功能是strstr

if (strstr(packetBuffer, "testing") != NULL) 
{ 
    // packetBuffer contains "testing" 
    // so do something... 
} 

注意:如果你只需要在字符串的開頭,以測試子,那麼你可以做這樣的:

if (strstr(packetBuffer, "testing") == packetBuffer) 
{ 
    // packetBuffer starts with "testing" 
    // so do something... 
} 
+0

這看起來並不好,因爲如果'packetBuffer'是'XXtestingXX',它不是'測試(大約4位數)',它就成爲真。 – MikeCAT

+0

@MikeCAT:目前尚不清楚OP是否要求子字符串位於緩衝區的起始位置,但我已經更新了答案以涵蓋這種可能性。 –

+0

第二個應該是'strstr(packetBuffer,「testing」)== packetBuffer',而不是'!='。 – MikeCAT

1

如果您可以使用標準C庫,strncmp是有用的。
長度也被檢查,以確保「測試」後確切地有4個字符(不只是數字)。

if (strlen(packetBuffer) == 11 && strncmp(packetBuffer, "testing", 7) == 0) { 
    // they are equal 
} 

請注意,這是不是很好的代碼,因爲使用了一些神奇的數字。

相關問題