Считать побайтово файл и записать в другой - 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");

Объяснение кода листинга программы

  1. uk1 - это переменная, которая содержит файловый дескриптор, открытый в режиме записи (wb). Это означает, что файл будет записан в двоичном формате.
  2. 2001.gif - это имя файла, который будет прочитан. В данном случае, это файл изображения GIF.
  3. wb - это параметр, переданный в функцию fopen. Он указывает, что файл должен быть открыт в режиме записи, а данные должны быть прочитаны как двоичные.
  4. В данном коде не указано, что происходит после открытия файла. Однако, предполагается, что код будет читать файл побайтно и записывать его в другой файл.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5
Похожие ответы