参考了
下面的文字:
fread返回的不是字节数,当且仅当下面这么用的时候,返回值才是字节数
char buff[size];
FILE *fp;
...
fread(buff, 1, size, fp);
...
如果是: fread(buff, size, 1, fp)
返回1表示读取了size字节,返回0表示读取数量不够size字节,究竟是多少不知道!!
竟然不知道,啥意思?
fread 如果返回是1 ,那么读到了size 字节?
那不是1,或者说是0 ,就代表读到了末尾还是错误?? (末尾还是错误??怎么判断 feof() ??)
我的意思是,末尾是末尾,错误是错误。。??
我这代码的意思是,准备发送一个文件:(avi 文件)(视频文件,本段代码处理视频后面的最后几秒钟)
if (bSend)
{
char nAviSaveName[2048] = {0};
sprintf(nAviSaveName,"%s/%s",SendAviPath,aviName);//指定 要发送的文件 的 绝对路径,准备读取
//LLDEBUG("Send openData ... %s",nAviSaveName);
FILE *pFile = fopen(nAviSaveName,"r+");
while(!feof(pFile))//
{
char m_SendInfo[1024]={0};
nRet = fread(m_SendInfo,sizeof(m_SendInfo),1,pFile); //读取数据
//LLDEBUG("read size is : %d",sizeof(m_SendInfo));
if (0== nRet)
{
//LLDEBUG("....Read end0 ");在这里说明读到尾了,也要发送
}
else
{
//bSend ...
}
bSend = ((API::API_Socket*)pSocket)->Send(nSocket,m_SendInfo,sizeof(m_SendInfo));
}
fclose(pFile);
}
}
//LLDEBUG("Send AviVideo end ");
确保 文件尾 也要发送出去。

本文详细解析了fread函数的使用方法及返回值的意义,特别是如何通过不同参数设置来获取确切的字节数。同时介绍了如何利用fread读取文件直至末尾,并确保即使在文件末尾也能够正确发送数据。
658

被折叠的 条评论
为什么被折叠?



