我正在編寫一個封裝來幫助我在將來的項目中(我完成了C書),並且希望在不使用fgetc
的情況下複製文件。這是我的代碼,它不起作用:爲什麼這種複製文件的方式不起作用
int CopyFile(char* filename, char* dest)
{
FILE* fp, *fout;
fp = fopen(filename,"rb");
//fout = fopen(dest, "wb");
if(fp == NULL)
{
return -1;
}
/*while((c = fgetc(fp)) != EOF)
{
fputc(c,fout);
}*/
long size = GetFileSize(fp);
printf("%lu", size);
char* file = malloc(size);
fread(file, size, 1, fp);
//fclose(fp);
fout = fopen(dest, "wb");
fwrite(file, size, 1, fout);
fclose(fp);
fclose(fout);
return 0;
}
我甚至用hexeditor打開文件,他們不相似。我究竟做錯了什麼?
*文件有什麼不同?在尺寸方面?內容?你確定'GetFileSize'返回的大小是否正確?你是否檢查過['fread'](http://en.cppreference.com/w/c/io/fread)或['fwrite'](http://en.cppreference.com/w/c/ io/fwrite)調用失敗?或者不讀/寫你要求的所有內容? 'GetFileSize'做什麼? – 2015-04-05 15:24:52
請參閱[GetFileSize](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364955%28v=vs.85%29.aspx) – BLUEPIXY 2015-04-05 15:41:38
@BLUEPIXY似乎並不一樣OP在所示程序中使用的功能。 – 2015-04-05 15:57:04