毕设做网站需要什么技术准备,开发门户网站多少钱,网站备案电话号码,天津网站推广公司哪家好受到以下博文的启发#xff1a; https://www.cnblogs.com/yup1983/p/11337837.html
验证#xff1a; 最近通过ESP8266远程控制小车#xff0c;在wifi回传的数据解析过程中遇到标题所述的烦恼 如上截图所示#xff0c;数据回传过程中会接受到‘\0’字节对应的ASCII码为0x0…受到以下博文的启发 https://www.cnblogs.com/yup1983/p/11337837.html
验证 最近通过ESP8266远程控制小车在wifi回传的数据解析过程中遇到标题所述的烦恼 如上截图所示数据回传过程中会接受到‘\0’字节对应的ASCII码为0x00,这就是问题的关键因素。
再看一下strstr()函数的源码
char* My_strstr(const char* str1, const char* str2)
{assert(str1 str2);const char* s1 str1;const char* s2 str2;const char* p str1;while (*p!\0){s1 p ;s2 str2;while (*s1 ! \0 *s2 ! \0 *s1 *s2){s1;s2;}if (s2 \0){return (char*)p;}p;}return NULL;
}在源码中可以看到strstr()函数在轮询判断的时候首先会判断while (*s1 ! ‘\0’ *s2 ! ‘\0’ *s1 *s2)即在函数未返回之前str1和str2中只要出现‘0x00’也就是‘\0’就会终止判断从而退出导致意想不到的效果。
对比上面一张截图即可发现答案 判断代码如下
void WIFI_Conformation(char* str,Dir* dir)
{printf(-----WIFI数据解析------\r\n);if(strstr(readString: {\button_up\:\tap\},button)){printf(strstr 能用\r\n);}if(strstr(str,up)){dir-up1;printf(\r\n----up----\r\n);}else if(strstr(str,down)){dir-down1;printf(\r\n----down----\r\n);}else if(strstr(str,left)){dir-left1;printf(\r\n----left----\r\n);}else if(strstr(str,right)){dir-right1;printf(\r\n----right----\r\n);}else;}