linux fread 的返回值问题

参考了

博文

下面的文字:

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  ");

确保 文件尾 也要发送出去。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teleger

你的支持是我前进的方向

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值