最近使用 ESP8266 的时候, 联网的过程中需要使用 strstr 函数来读取串口发来的某些重要信息, 使用 strstr 函数发现某些时候能够正常返回需要寻找的字符串的指针, 有些时候找不到, 后来发现原来是这样的问题, 举例如下:
char Temp[10] = "Hello world!", 如果使用 strstr(Temp, "world"), 是能够正常赶回 world 在 Temp 数组中的位置, 但是如果 Temp 接收来自 8266 的数据, 中间数据有分开过, 可能会被插入 0x00(也就是 \ 0) 的数据, 这样的话, ststr 函数在 Temp 数组中寻找需要的字符串时, 遇到 0x00 就会停止寻找, 如果要寻找的字符串在 0x00 之后, 就会返回没有找到该字符串. 其实也可以理解, 因为 strstr 不能在一个无限长的字符串中去一直寻找需要的字符串.
来源: http://www.bubuko.com/infodetail-3153078.html