做串口數據接收的時候發現的,才意識的問題的嚴重性。上半年在單位寫了幾個檢測程序,是通過串口與下位機通信的,因爲下位機不停的發數據(有固定的頻率和幀格式),上位機在某一時刻如果要接收數據的時候,必須檢測接到的數據是否是正確的一幀,我把這種叫作對齊,在對齊的過程中用到了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;
}