Нужно прочитать данные из png файла и сохранить их на новый, как?C ++ - PullRequest
2 голосов
/ 09 января 2012

Я пытаюсь прочитать данные из одного файла PNG, и хочу записать эти данные в новый файл и сохранить его. Я делаю такие вещи, как это:

FILE *fp = fopen("C:\\dev\\1.png", "rb");
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
rewind(fp);
char *buffer = (char*)malloc(sizeof(char)*size);
size_t result = fread(buffer, 1, size, fp);
FILE *tmpf = fopen("C:\\dev\\1_1.png", "wb");
fputs(buffer, tmpf);
fflush(tmpf);
fclose(tmpf);

У меня проблема, второй файл содержит только одно: only PNG SUB

В отладке я проверил, long size = 652521, и результат size_t имеет тот же размер ... Не понимаю, почему я не могу записать все данные во второй файл ...

1 Ответ

4 голосов
/ 09 января 2012

Не используйте fputs - используйте fwrite - fputs для строк и завершится на первом нулевом байте.

Измените:

fputs(buffer, tmpf);

на:

fwrite(buffer, 1, size, tmpf);
...