做串口数据接收的时候发现的,才意识的问题的严重性。上半年在单位写了几个检测程序,是通过串口与下位机通信的,因为下位机不停的发数据(有固定的频率和帧格式),上位机在某一时刻如果要接收数据的时候,必须检测接到的数据是否是正确的一帧,我把这种叫作对齐,在对齐的过程中用到了strstr,因为当时的数据并没有出现过接收到的字符串中有空字符包含的情况,因此,通常情况是对的,但是,在做测试的时候,如果事先给出的字符串是由“空字符串(长度小于帧)+判别字符串+……”组成的话,用strstr查找“判别字符串”返回的指针值为NULL,我不知道微软有没有提供满足此种情况的函数,不过我觉得自己写一个还是把稳一些。
char* sprstrstr(char *str, int len, char *substr)
{
int iend = 0,
i = 0,
j = 0;
char *pDest = NULL;
iend = len - strlen(substr);
if ( iend > 0 )
{
for ( i = 0; i <= iend; i++ )
for ( j = i; str[j] == substr[j-i]; j++ )
if ( substr[j-i+1] == '/0' )
return pDest = str + i;
}
return NULL;
}