Работа с бинарным файлом - C (СИ)

Узнай цену своей работы

Формулировка задачи:

подскажите пожалуйста как перезаписать определенную область в бинарном файле. именно конкретный участок

Решение задачи: «Работа с бинарным файлом»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. FILE *open_file(const char *name, const char *mode)
  5. {
  6.     FILE *f = fopen(name, mode);
  7.     if (!f) {
  8.         printf("Cannot open file '%s'\n", name);
  9.         exit(1);
  10.     }
  11. }
  12.  
  13. void print_file(const char *name)
  14. {
  15.     FILE *f = open_file(name, "rb");
  16.     int c;
  17.     while ( (c = fgetc(f)) != EOF )
  18.     {
  19.         printf("%2X ", c);
  20.     }
  21.     puts("");
  22.     fclose(f);
  23. }
  24.  
  25. void fill(const char *name)
  26. {
  27.     FILE *f = open_file(name, "wb");
  28.     for (int i=0; i<16; i++)
  29.         fputc(i, f);
  30.     fclose(f);
  31. }
  32.  
  33. void change(const char *name)
  34. {
  35.     FILE *f = open_file(name, "r+b");
  36.     fseek(f, 3, SEEK_SET);
  37.     const char s[] = { 0xDE, 0xAD, 0xBE, 0xEF};
  38.     fwrite(s, 1, 2, f);
  39.     fseek(f, 1, SEEK_CUR);
  40.     fwrite(s+2, 1, 2, f);
  41.     fclose(f);
  42. }
  43.  
  44. int main()
  45. {
  46.     const char *name = "file.dat";
  47.  
  48.     fill(name);
  49.     printf("Original: ");
  50.     print_file(name);
  51.  
  52.     printf("Modified: ");
  53.     change(name);
  54.     print_file(name);
  55. }

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

  1. Включаются необходимые заголовочные файлы.
  2. Определяется функция, открывающая файл с заданным именем и режимом работы.
  3. Если файл не удалось открыть, выводится сообщение об ошибке и программа завершается.
  4. Определяется функция, печатающая содержимое файла в шестнадцатеричной системе счисления.
  5. В функции fill() файл записывается последовательностью байтов от 0 до 15.
  6. В функции change() производится поиск позиции 3 в файле и замена двух байтов на значение 0xDE, 0xAD, 0xBE, 0xEF.
  7. В функции main() создается файл с именем file.dat, заполняется данными, печатается его содержимое, затем изменяется и снова печатается.

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы