3 结论:解决方案及效果
代码中对fread与fwrite的调用应该改成如下:
fread(&buffer, 1, FILE_BUFFER_SIZE, fsrc)
fwrite(&buffer + ulBufWrite, 1, ulBufRead, fdst)
4 经验总结:预防措施和规范建议
使用库函数前,应读一下使用说明。
比较通用的函数可以从其他产品移植比较保险,自己写往往容易出错。
5 备注
6 考核点
fread fwrite的使用
7 试题
对下列程序输出分析正确的是:D
bool test1()
{
char buffer[8];
unsigned long ulBufRead, ulBufWrite;
FILE * fsrc = ::fopen("a.txt", "rb"); //打开原始文件
if (NULL == fsrc)
{
return false;
}
FILE * fdst = ::fopen("b1.txt", "wb"); //打开目标文件
if (NULL == fdst)
{
::fclose(fsrc);
return false;
}
if ((ulBufRead = ::fread(&buffer, 8, 1, fsrc)) != 0)
{
if (0 == (ulBufWrite = ::fwrite(&buffer, 1, ulBufRead, fdst)))
{
::fclose(fsrc);
::fclose(fdst);
return false;
}
}
::fclose(fsrc);
::fclose(fdst);
return true;
}
bool test2()
{
char buffer[8];
unsigned long ulBufRead, ulBufWrite;
FILE * fsrc = ::fopen("a.txt", "rb"); //打开原始文件
if (NULL == fsrc)
{
return false;
}
FILE * fdst = ::fopen("b2.txt", "wb"); //打开目标文件
if (NULL == fdst)
{
::fclose(fsrc);
return false;
}
if ((ulBufRead = ::fread(&buffer, 1, 8, fsrc)) != 0)
{
if (0 == (ulBufWrite = ::fwrite(&buffer, 1, ulBufRead, fdst)))
{
::fclose(fsrc);
::fclose(fdst);
return false;
}
}
::fclose(fsrc);
::fclose(fdst);
return true;
}
A
如果a.txt的文件内容为"1234567812345678",则b1.txt与b2.txt的文件内容一致,均为"1"
B.
如果a.txt文件的内容为"1234567812345678"、b1.txt与b2.txt的文件内容一致,均为"12345678"
C.
如果a.txt的文件内容为"1234567812345678",则b1.txt与b2.txt的文件内容不一致,b1.txt为"12345678",b2.txt为"1"
D.
如果a.txt的文件内容为"1234567812345678",则b1.txt与b2.txt的文件内容不一致,b1.txt为"1",b2.txt为"12345678"
阅读(228) | 评论(0) | 转发(0) |