Считать побайтово файл и записать в другой - 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. Он указывает, что файл должен быть открыт в режиме записи, а данные должны быть прочитаны как двоичные.- В данном коде не указано, что происходит после открытия файла. Однако, предполагается, что код будет читать файл побайтно и записывать его в другой файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д