ваш код на C выглядит корректно, я не вижу проблем с синтаксисом.Так что это может быть что-то, что не связано с самим C.
Единственное, что сейчас приходит на ум, - это то, что что-то работает одновременно в фоновом режиме и хлопает вашей структурой.Я не очень разбираюсь в pcap, поэтому не могу помочь вам со спецификой ...
НО, когда у меня есть такие странности, я обычно создаю функцию статистики, которая выводит все мыслимые вещи оструктура ... и вызывать функцию статистики везде ... это похоже на мини-встроенный модульный тест.
Я бы хотел, чтобы вы обновили свой код и попробовали его:
void hdr_stats(struct pcap_pkthdr *header){
unsigned int i;
printf("address of header: %p\n", header);
printf("caplen: %d\n", header->caplen);
i = header->caplen;
printf("caplen: %d\n", i);
printf("len: %d\n", header->len);
i = header->len;
printf("len: %d\n", i);
//-------
// add header->ts.xxxx debugging here, might give other clues...
//-------
}
...
while((packet = pcap_next(handle, &header)) != NULL) {
printf("[%d]\n", header.len);
hdr_stats(&header);
process_packet(&header, packet);
hdr_stats(&header);
}
...
void process_packet(struct pcap_pkthdr *header, const u_char *packet) {
hdr_stats(header);
printf("[%d]\n", header->len);
hdr_stats(header);
}
это может помочь вам исправить ошибку.