在单片机调试的的时候,发现目标‘字符串’中的 目标字符,strstr()函数竟然检测不到(比较不出来)返回的时候0x00地址(NULL),很是奇怪,最后分析发现,原来是目标‘字符串’中含有0x00数据,strstr()函数碰到0x00就终止了查找,所以0x00后面的目标字符无法查到,strstr()返回的是0x0地址,指向的字符是0x00上的字符。
在用strstr查找之前加了一个剔除0x00数据才小程序,去掉待检数组中的0x00数据,问题就解决了。
- void remove_out_0x00_dat(char *in_buff, int data_len)
- {
- int str_len = 0;
- for(int i = 0; i < data_len; i++)
- {
- if(in_buff[i] != 0x00)
- {
- in_buff[str_len] = in_buff[i];
- str_len++;
- }
- }
- }
-
|