文件的格式时压缩包,暂时问题出在读取的时候,读一点就读不下去了,去调试的时候经常是空或字符串中字符无效,用的是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字节就打开一下目标文件,然后写进去呢,这样是反复的进行打开和关闭目标文件;
为啥不做成,把两个文件(源文件和目标文件)先都打开,然后从一个里面读,然后写到另一个文件(目标)里呢?
你试一下先把文件打开,然后进行读写,最后关闭两个文件;