当前位置: 技术问答>linux和unix
fwrite的问题
来源: 互联网 发布时间:2016-08-02
本文导语: fwrite怎么结束?我用fread读文件放到buf中,然后用fwrite把buf写到另一个文件,fread读到的是实际读的字节数。 但fwrite只有出错的时候才会少写,不会有文件结束的标志。因为我的buf中间是想用网络来传输的,所以不能...
fwrite怎么结束?我用fread读文件放到buf中,然后用fwrite把buf写到另一个文件,fread读到的是实际读的字节数。
但fwrite只有出错的时候才会少写,不会有文件结束的标志。因为我的buf中间是想用网络来传输的,所以不能以readSize来
做为结束的判断标志。如下面的代码无法终止,该如何修改呢?请高手指教。谢谢
int main()
{
char buf[512] = {0};
int readSize = 0;
int writeSize = 512;
FILE *fpo = NULL;
FILE *fpn = NULL;
fpo = fopen("../123.txt", "r");
if (fpo == NULL)
printf("fpo errorn");
fpn = fopen("abc.txt", "a");
if (fpn == NULL)
printf("fpn errorn");
while(writeSize == 512)
{
readSize = fread(buf, 1, 512, fpo);
printf("read: %dn", readSize);
writeSize = fwrite(buf, 1, 512, fpn);
printf("write size :%dn", writeSize);
memset(buf, EOF, 512);
}
fclose(fpo);
fclose(fpn);
return 0;
}
但fwrite只有出错的时候才会少写,不会有文件结束的标志。因为我的buf中间是想用网络来传输的,所以不能以readSize来
做为结束的判断标志。如下面的代码无法终止,该如何修改呢?请高手指教。谢谢
int main()
{
char buf[512] = {0};
int readSize = 0;
int writeSize = 512;
FILE *fpo = NULL;
FILE *fpn = NULL;
fpo = fopen("../123.txt", "r");
if (fpo == NULL)
printf("fpo errorn");
fpn = fopen("abc.txt", "a");
if (fpn == NULL)
printf("fpn errorn");
while(writeSize == 512)
{
readSize = fread(buf, 1, 512, fpo);
printf("read: %dn", readSize);
writeSize = fwrite(buf, 1, 512, fpn);
printf("write size :%dn", writeSize);
memset(buf, EOF, 512);
}
fclose(fpo);
fclose(fpn);
return 0;
}
|
我没有研究过 tftp 协议,但是我觉得不同可能没有传输大小的
一般传输较大的文件时都是分包传输的,没有大小怎么分包呢