文件的格式时压缩包,暂时问题出在读取的时候,读一点就读不下去了,去调试的时候经常是空或字符串中字符无效,用的是socket传送到另一端。
if(0 == fopen_s(&fp, filepath, "rb") && fp) { fseek(fp,n_refilesize,SEEK_SET); //偏移到文件的断点处; while(!feof(fp)) { memset(szBuffer, 0, sizeof(szBuffer)); stRead = fread(szBuffer, 1, 1023, fp); if(stRead <= 0 || stRead > 1023) { break; } CString s = szBuffer; if (SMS_ERROR_SUCC!=link.Send(s)|| SMS_ERROR_SUCC!=link.Receive(iRet)|| SMS_ERROR_SUCC!=iRet) { return SMS_ERROR_SEND; //发送失败 } } fclose(fp); }
解决方案
12
建议不要只用feof函数来判断能否到了文件末尾;
http://blog.sina.com.cn/s/blog_705a5ff00101ab5d.html
http://blog.sina.com.cn/s/blog_705a5ff00101ab5d.html
14
仅供参考:
void HexDump(char *buf,int len,int addr) { int i,j,k; char binstr[80]; for (i=0;i<len;i++) { if (0==(i%16)) { sprintf(binstr,"%08x -",i+addr); sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } else if (15==(i%16)) { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); sprintf(binstr,"%s ",binstr); for (j=i-15;j<=i;j++) { sprintf(binstr,"%s%c",binstr,("!"<buf[j]&&buf[j]<="~")?buf[j]:"."); } printf("%s\n",binstr); } else { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } } if (0!=(i%16)) { k=16-(i%16); for (j=0;j<k;j++) { sprintf(binstr,"%s ",binstr); } sprintf(binstr,"%s ",binstr); k=16-k; for (j=i-k;j<i;j++) { sprintf(binstr,"%s%c",binstr,("!"<buf[j]&&buf[j]<="~")?buf[j]:"."); } printf("%s\n",binstr); } }
12
你是读一个1024字节就打开一下目标文件,然后写进去呢,这样是反复的进行打开和关闭目标文件;
为啥不做成,把两个文件(源文件和目标文件)先都打开,然后从一个里面读,然后写到另一个文件(目标)里呢?
你试一下先把文件打开,然后进行读写,最后关闭两个文件;