Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200

Запись в бинарник и его чтение

01.02.2010, 05:37. Показов 2584. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, задача состоит в том, что нужно записать в бинарник сведения о сканерах и считать их из него. Проблема в том что нужно в первых 2-х байтах записать количество сканеров. Я сдвигаю курсор на 2 байта и начинаю запись сканеров, затем сдвигаю курсор в начало бинарника и записываю подсчитанное кол-во записей, но когда я читаю из бинарника количество записей (первые 2 байта) выходит примерно 82435947 Помогите пожалуйста, заранее благодарен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <stdio.h>
#include <windows.h>
 
const int l_mode = 25;
 
struct scan_info{
   char   model[l_mode+1]; //наименование модели
   int    price;           //цена
   double x_size;          //горизонтальный размер области сканирования
   double y_size;          //вертикальный размер области сканирования
   int    optr;            //оптическое разрешение
   int    grey;            //число градаций серого
} scan;
 
 
short int count_scan = 0; //количество записей
int write_bin();    //запись в бинарник
int read_bin(int number_row); //чтение из бинарника
 
int main(){
 
   SetConsoleCP(1251);
   SetConsoleOutputCP(1251);
   printf("%i",sizeof(count_scan));
   printf("\nВводим сканеры: ");
 
   write_bin();
 
   printf("\nВведите номер записи или 0, чтобы вывести все строки: ");
   int i;
   scanf("%i", &i);
 
   read_bin(i);
 
   return 0;
 
}
 
int write_bin(){
 
   FILE *f = fopen("D:\\C++\\lab\\Функции\\date_base.bin","wb");
   if(f == NULL){
      printf("Файл не создан\n");
      return 1;
   }
 
   fseek(f,sizeof(count_scan),SEEK_SET);
 
   while(1==1){
 
      printf("\nВведите модель: ");
      scanf("%s",&scan.model);
      for(int i = strlen(scan.model)+1; i <= l_mode; i++){
         scan.model[i] = ' ';
      }
      scan.model[l_mode+1] = '\0';
 
      printf("\nВведите цену: ");
      scanf("%i", &scan.price);
      printf("\nВведите горизонтальный размер области сканирования: ");
      scanf("%lf", &scan.x_size);
      printf("\nВведите вертикальный размер области сканирования: ");
      scanf("%lf", &scan.y_size);
      printf("\nВведите оптическое разрешение: ");
      scanf("%i", &scan.optr);
      printf("\nВведите число градаций серого: ");
      scanf("%i", &scan.grey);
 
      fwrite(&scan, sizeof(scan), 1, f);
      count_scan++;
 
      printf("\nПродолжить ввод? (y/n):  ");
      static char continie;
      scanf("%s",&continie);
      if(continie == 'n') break;
 
   }
   fseek(f,0,SEEK_SET);
   fwrite(&count_scan, sizeof(count_scan), 1, f);
   printf("\nБинарник записан");
   fclose(f);
   return 0;
}
 
int read_bin(int number_row){
 
   FILE *f = fopen("D:\\C++\\lab\\Функции\\date_base.bin","wb");
   if(f == NULL){
      printf("Файл не найден\n");
      return 1;
   }
   fseek(f,sizeof(count_scan),SEEK_SET);
   printf("\n%i",number_row);
   if(!number_row){
      for(int i = 1; i <=count_scan; i++){
         fread(&scan, sizeof(scan), 1,f);
         printf("\nНомер записи: %i\n%s\n%i\n%lf\n%lf\n%i\n%i\n\n",
                 i,
                 scan.model,
                 scan.price,
                 scan.x_size,
                 scan.y_size,
                 scan.optr,
                 scan.grey);
         fseek(f,sizeof(scan),SEEK_CUR);
      }
   }
   else{
      fseek(f,sizeof(scan)*number_row,SEEK_CUR);
      fread(&scan, sizeof(scan), 1,f);
      printf("\nНомер записи: %i\n%s\n%i\n%lf\n%lf\n%i\n%i\n\n",
                 number_row,
                 scan.model,
                 scan.price,
                 scan.x_size,
                 scan.y_size,
                 scan.optr,
                 scan.grey);
   }
   fseek(f,0,SEEK_SET);
   int count;
   fread(&count,sizeof(count_scan),1,f);
   printf("Количество записей: %i", count);
   fclose(f);
   return 0;
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2010, 05:37
Ответы с готовыми решениями:

запись и чтение структуры в бинарник
как правильно записывать и считывать структуру из бинарника? при этом коде программа виснет сами структуры struct employee { ...

Чтение файла (текст+бинарник)
Нужно прочитать файл, заменить {CODE128} на сгенерированное число и отправить в порт принтера. Файл содержит управляющие команды (ASCII...

Запись структуры с строкой в бинарник
Здравствуйте, уважаемые форумчане! Интересовал вопрос записи структуры, в который есть string, в бинарный файл. Нашел на форуме код и...

21
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.02.2010, 04:45
Студворк — интернет-сервис помощи студентам
C
1
int write_bin(void){
пустые скобки - это стиль до 1989 года
они работают, но только для того, чтобы поддерживать старые-престарые программы

Добавлено через 43 секунды
то есть определение и объявление делается с void, а вызов уже с пустыми скобками
0
 Аватар для _Eldar_
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
03.02.2010, 04:45  [ТС]
понял) буду знать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2010, 04:45

Очень медленная запись в бинарник
Здравствуйте! Приходится писать большие бинарные файлы из 4-байтных чисел real (использую Intel Fortran+Visual Studio). Для этого...

Запись массива в файл и его чтение
Помогите, пожалуйста: надо записать в файл массив из, например, 10 элементов, вычисляющихся как f=f+1, например. Затем считать полученные...

Запись в бинарный файл, его чтение и редактирование
Здравствуйте, возникла проблема с записью данных в бинарный файл. Есть некая структура, по которой читается файл, эти данные выводятся в...

Чтение текста из файла и запись его частей в переменные
Всем привет. Столкнулся с проблемой переноса ключей расшифровки. Одна программа генерирует ключи, записывает их в таком виде: 3|2|3 (могу...

Чтение текста из файла и запись его частей в переменные
Здравствуйте, задача такая - у меня есть текстовой документ, в который записаны фраза и ответ на эту фразу через разделитель - | ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru