Вот написал фунцию которая собирает из отдельных файлов один большой. Проблена в том, что если я удаляю отдельные файлы после копирования, то результирующий файл становиться нулевой длинны. Иде косяк? char filename[1024*128]; int i = 0; int blocks_nunber = m_file_size/DEFAULT_DL_SEGMENT; if(m_file_size%DEFAULT_DL_SEGMENT) blocks_nunber++; snprintf(filename, sizeof(filename), "%s/%s", m_store_dir.c_str(), m_fn.c_str()); FILE* pTF = fopen(filename, "w+"); if(pTF == 0) { printf("cant open target file for assembling%s\n", filename); perror("Error"); return; } while(i < blocks_nunber) { snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i); FILE* pF = fopen(filename, "r"); if(pF == 0) { printf("cant open temp file for assembling%s\n", filename); perror("Error"); fclose(pTF); return; } int n = 0; while(n = fread(filename, 1, sizeof(filename), pF)) { fwrite(filename, 1, n, pTF); } fclose(pF); //snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i); //unlink(filename); //printf("removing temp file: %s\n", filename); i++; } fclose(pTF); i = 0; /*while(i < blocks_nunber) { snprintf(filename, sizeof(filename), "%s/%s_dltmp/%s_%lu", m_tempdir.c_str(), m_fn.c_str(), m_fn.c_str(), i); unlink(filename); printf("removing temp file: %s\n", filename); i++; } snprintf(filename, sizeof(filename), "%s/%s_dltmp", m_tempdir.c_str(), m_fn.c_str()); rmdir(filename);*/ /**********************************************************/