我想在C++中创建一个文件分割器/连接器,并且我的分割函数有问题。我用一个MP4文件进行了快速测试,结果是:其他部分都可以,但最后一部分总是不起作用。我不明白这一点。任何人都可以请给我解释一下吗?这里是我的分裂功能:C++中的文件分割器
void split_F(const char* file_name, int number_of_part)
{
FILE *fp_read = fopen(file_name, "rb");
//calculate file size
int file_size;
fseek(fp_read, 0L, SEEK_END);
file_size = ftell(fp_read);
rewind(fp_read); //reset file pointer
//calculate number of parts
//int number_of_part = (int)ceil((double)file_size/size_of_part);
long size_of_part;
size_of_part = (int)floor((double)file_size/number_of_part);
cout << "Total files after split: " << number_of_part << endl
<< "...Processing..." << endl;
//main process
char name[255] = "";
for (int count = 1; count <= number_of_part; count++)
{
sprintf(name, "%s.part_%03d", file_name, count);
FILE *fp_write = fopen(name, "wb");
//create buffer
char *buffer = new char[size_of_part];
memset(buffer, NULL, size_of_part); //reset buffer
fread(buffer, size_of_part, 1, fp_read);
fwrite(buffer, size_of_part, 1, fp_write);
fseek(fp_read, count*size_of_part, SEEK_SET);
cout << "> File: " << name << " done babe!" << endl;
delete[] buffer;
fclose(fp_write);
}
fclose(fp_read);
}
这不是C,那是C++。 – mch
哎呀对不起,我的大学教两个,所以我很困惑 – YaphatS
解释“不工作” –