印刷:
あなたはパケット使用のprintf( "%sの"、データ)を印刷することはできません。これは、NULLバイト( '\ 0')が発生したときに印刷が終了するためです。これは、送信データを参照する際に非常に頻繁に発生します。あなたは%のlen NULLバイトを無視して%列strのうち、バイト印刷するには、以下を使用できますが、それはどの断然バイトが見えないので、あなたを得ることはありません。
// len = pkthdr.len
printf("%.*s", len, str);
検索すると、あなたが非を使用することができます - 標準機能strnstr:
#include <stdio.h>
#include <string.h>
char *strnstr(const char *haystack, const char *needle, size_t len)
{
int i;
size_t needle_len;
/* segfault here if needle is not NULL terminated */
if (0 == (needle_len = strlen(needle)))
return (char *)haystack;
for (i=0; i<=(int)(len-needle_len); i++)
{
if ((haystack[0] == needle[0]) &&
(0 == strncmp(haystack, needle, needle_len)))
return (char *)haystack;
haystack++;
}
return NULL;
}
int main()
{
char big_str[] = "abc\0cde\0efg\0";
printf("%s", strnstr(big_str, "efg", 12));
return 0;
}
が、この読み:MACアドレスはどのようにあなたがその終了を決定します、$ 00で始まる可能性がある場合https://stackoverflow.com/a/25705264/6814540
を?固定長ですか? 'rc'? – chux
パケット全体を検索したい。 – Rayne