Неправильно записывается файл С++ fwrite()

Пытаюсь прочитать exe и записать в другой файл, но после записи он не выполняется

#include <iostream>
#include <Windows.h>

using namespace std;

int main() {
    FILE * firstFile;
    FILE * secondFile;
    BYTE * buffer;

    firstFile = fopen("calc.exe", "rb");
    if (firstFile == NULL) return 1;
    secondFile = fopen("sss.exe", "wb");
    if (secondFile == NULL) return 1;

    fseek(firstFile, 0, SEEK_END);
    unsigned long s2 = ftell(firstFile);

    buffer = (BYTE *)malloc(s2);

    int read = fread(buffer, 1, s2, firstFile);
    perror("fread");
    int write = fwrite(buffer, 1, s2, secondFile);
    perror("fwrite");

    free(buffer);

    fclose(firstFile);
    fclose(secondFile);

    return 0;
}

Не работает не только с exe, но и с любыми другими файлами. Кто-то знает как решить эту проблему?


Ответы (1 шт):

Автор решения: Harry
fseek(firstFile, 0, SEEK_END);
unsigned long s2 = ftell(firstFile);

А назад, на начало файла кто будет указатель откатывать? Дейкстра? :)

fseek(firstFile, 0, SEEK_END);
unsigned long s2 = ftell(firstFile);
fseek(firstFile, 0, SEEK_SET);
→ Ссылка