Работа с бинарным файлом - C (СИ)
Формулировка задачи:
подскажите пожалуйста как перезаписать определенную область в бинарном файле. именно конкретный участок
Решение задачи: «Работа с бинарным файлом»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- FILE *open_file(const char *name, const char *mode)
- {
- FILE *f = fopen(name, mode);
- if (!f) {
- printf("Cannot open file '%s'\n", name);
- exit(1);
- }
- }
- void print_file(const char *name)
- {
- FILE *f = open_file(name, "rb");
- int c;
- while ( (c = fgetc(f)) != EOF )
- {
- printf("%2X ", c);
- }
- puts("");
- fclose(f);
- }
- void fill(const char *name)
- {
- FILE *f = open_file(name, "wb");
- for (int i=0; i<16; i++)
- fputc(i, f);
- fclose(f);
- }
- void change(const char *name)
- {
- FILE *f = open_file(name, "r+b");
- fseek(f, 3, SEEK_SET);
- const char s[] = { 0xDE, 0xAD, 0xBE, 0xEF};
- fwrite(s, 1, 2, f);
- fseek(f, 1, SEEK_CUR);
- fwrite(s+2, 1, 2, f);
- fclose(f);
- }
- int main()
- {
- const char *name = "file.dat";
- fill(name);
- printf("Original: ");
- print_file(name);
- printf("Modified: ");
- change(name);
- print_file(name);
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Определяется функция, открывающая файл с заданным именем и режимом работы.
- Если файл не удалось открыть, выводится сообщение об ошибке и программа завершается.
- Определяется функция, печатающая содержимое файла в шестнадцатеричной системе счисления.
- В функции fill() файл записывается последовательностью байтов от 0 до 15.
- В функции change() производится поиск позиции 3 в файле и замена двух байтов на значение 0xDE, 0xAD, 0xBE, 0xEF.
- В функции main() создается файл с именем
file.dat
, заполняется данными, печатается его содержимое, затем изменяется и снова печатается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д