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