在单片机调试的的时候,发现目标‘字符串’中的 目标字符,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++;
}
}
}
|