Считать побайтово файл и записать в другой - C (СИ)
Формулировка задачи:
Добрый день, хочу считать побайтово файл и записать его в другой. С текстовыми файлами все нормально, но с картинками не работает корректно. В чем может быть проблема? Заранее спасибо. Вот код:
#include <fstream>
#include <iterator>
#include <vector>
int main()
{
#define MAX_FILE_SIZE 100000
FILE *uk1;
char filename[255] = "200.gif";
unsigned int readdata[MAX_FILE_SIZE];
int file_length = 0;
if ((uk1 = fopen(filename, "rb")) == NULL)
{
printf("Error! Can not read file %s.\n", filename);
exit(1);
}
else
{
// Определяется размер файла
fseek(uk1, 0, SEEK_END);
file_length = ftell(uk1);
printf("File %s lenght is %d\n", filename, file_length);
// Побайтно считыватся данные
fseek(uk1, 0, SEEK_SET);
int i = 0;
while (!feof(uk1) && i<file_length && i<MAX_FILE_SIZE)
readdata[i++] = fgetc(uk1);
readdata[i] = 0;
fclose(uk1);
}
uk1 = fopen("2001.gif", "w+");
for (int i = 0; i <= file_length; i++)
fputc(readdata[i], uk1);
fclose(uk1);
}Решение задачи: «Считать побайтово файл и записать в другой»
textual
Листинг программы
uk1 = fopen("2001.gif", "wb");
Объяснение кода листинга программы
uk1- это переменная, которая содержит файловый дескриптор, открытый в режиме записи (wb). Это означает, что файл будет записан в двоичном формате.2001.gif- это имя файла, который будет прочитан. В данном случае, это файл изображения GIF.wb- это параметр, переданный в функцию fopen. Он указывает, что файл должен быть открыт в режиме записи, а данные должны быть прочитаны как двоичные.- В данном коде не указано, что происходит после открытия файла. Однако, предполагается, что код будет читать файл побайтно и записывать его в другой файл.