最近使用ESP8266的時候,聯網的過程中需要使用strstr函數來讀取序列槽發來的某些重要資訊, 使用strstr函數發現某些時候能夠正常傳回需要尋找的字元串的指針,有些時候找不到,後來發現原來是這樣的問題,舉例如下:
char Temp[10] = "Hello world!",如果使用strstr(Temp, "world"),是能夠正常趕回world在Temp數組中的位置,但是如果Temp接收來自8266的資料,中間資料有分開過,可能會被插入0x00(也就是\0)的資料,這樣的話,ststr函數在Temp數組中尋找需要的字元串時,遇到0x00就會停止尋找,如果要尋找的字元串在0x00之後,就會傳回沒有找到該字元串。其實也可以了解,因為strstr不能在一個無限長的字元串中去一直尋找需要的字元串。