fread的返回值 C语言,fread 返回值,该怎么处理

C/C++ codeFILE *stream;

char szBuf[sizeof(pcap_file_header)];

memset(szBuf,0,sizeof(pcap_file_header));

size_t nRetRead = 0;

int nfile = m_strFilePath.ReverseFind('\\');

nfile = m_strFilePath.GetLength()-nfile-1;

CString strFile = m_strFilePath.Right(nfile);

if ((stream = fopen(strFile,"r+"))!=NULL)

{

fseek(stream,0,SEEK_SET);

fseek(stream,0,SEEK_END);

long longBytes= ftell(stream);

rewind(stream);

pcap_file_header pcapCheck;

nRetRead = fread(szBuf,1,sizeof(pcap_file_header),stream);

if (nRetRead == sizeof(pcap_file_header))

{

if (pcapCheck.magic != 3435973836)

{

MessageBox("This is not a .cap file");

return ;

}

}

// rewind(stream);

// fseek(stream,sizeof(pcap_file_header),SEEK_SET);

long loffset = sizeof(pcap_file_header);

if (loffset == sizeof(pcap_file_header))

{

HANDLE hThread;

DWORD dwThread;

hThread = CreateThread(NULL,0,MyThread,NULL,0,&dwThread);

if (hThread == NULL)

{

MessageBox("Create Thread faild !");

}

while(/*!feof(stream) && */loffset < longBytes)

{

PcapPacket pcappacket;

nRetRead = 0;

memset(&pcappacket,0,sizeof(PcapPacket));

try

{

nRetRead = fread(szBuf,1,sizeof(pcap_pkthdr),stream);

if (nRetRead !=sizeof(pcap_pkthdr))

{

int nTemp = sizeof(pcap_pkthdr) - nRetRead;

while(nTemp!=0)

{

nRetRead = fread(szBuf+nTemp,1,nTemp,stream);

if (nRetRead != nTemp)

{

nTemp -= nRetRead;

}

}

loffset+=sizeof(pcap_pkthdr);

}

else

loffset += nRetRead;

pcap_pkthdr* pheader = (pcap_pkthdr*)szBuf;

pcappacket.header.ts.tv_sec = pheader->ts.tv_sec;

pcappacket.header.ts.tv_usec = pheader->ts.tv_usec;

pcappacket.header.len = pheader->len;

pcappacket.header.caplen = pheader->caplen;

// rewind(stream);

// fseek(stream,loffset,SEEK_SET);

}

catch(...)

{

MessageBox("Read file error! ");

}

try

{

pcappacket.pkt_data = new u_char[pcappacket.header.caplen];

}

catch (...)

{

MessageBox("New u_char error! ");

}

try

{

nRetRead = fread(pcappacket.pkt_data,1,pcappacket.header.caplen,stream);

if (nRetRead != pcappacket.header.caplen)

{

int nTemp = pcappacket.header.caplen - nRetRead;

while(nTemp!=0)

{

nRetRead = fread(pcappacket.pkt_data+nTemp,1,nTemp,stream);

if (nRetRead != nTemp)

{

nTemp -= nRetRead;

}

}

loffset+=pcappacket.header.caplen;

}

else

loffset += nRetRead;

// rewind(stream);

// fseek(stream,loffset,SEEK_SET);

}

catch (...)

{

MessageBox("Read file error! ");

}

g_PcapPacketdeque_cs.Lock();

try

{

g_PcapPacketdeque.push_back(pcappacket);

}

catch (...)

{

MessageBox("g_PcapPacketdeque error! ");

}

g_PcapPacketdeque_cs.Unlock();

}

if (IsExit == TRUE)

{

CloseHandle(hThread);

}

MessageBox("Anlyze .cap file successfull!");

}

}

else

MessageBox("Open .cap file error");

if (stream!= NULL)

{

fclose(stream);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值