Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 688

Раздел: C++
/ вопрос открыт /

С ++. Создание и запись бинарного файла?


Задача состоит в том, чтобы создать файл и записать его данными, но есть структура параметров, которая должна соблюдаться:
n -индекс (4 байта)
timestamp - временная метка (4 байта)
unsigned int Ak - значение напряжения аналогового канала (2 байта)
unsigned int SM -значение напряжения дискретного канала (2 байта)
Каналов может быть много, как будут поступать данные пока неизвестно.
Допустим 3 аналоговых канала 2 дискретных
Файл должен записываться
n timestamp анал. каналы дискр.
4 байта 4 байта 2 байта 2 байта 2 байта 2 байта 2 байта

Я новичок в с++. Подскажите, возможно, есть более разумный вариант заполнения данных каналов(чтоб не с консоли).
Да и вообще, мои ошибки. И как проверить соблюдается ли структура.

Приложение:
  1. {{code}} #include "stdafx.h"
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10.  
  11. // Create Binary file
  12. struct Binaryfile{
  13. int n; //4 byte
  14. int timestamp;//4 byte
  15. unsigned int Ak;//2 byte
  16. unsigned int SM;//2 byte
  17. };
  18. Binaryfile s1,analog,discret;
  19. s1.n =3;
  20. s1.timestamp=45;
  21. int countAnalCh=2;
  22. int countDiscrCh=3;
  23. analog.Ak=0;
  24. discret.SM=0;
  25.  
  26. fstream binary_file("D:\Struct\Struct\ComtradeFormat\fileConfiguration.dat",ios::out|ios::binary|ios::app);
  27. if(!binary_file)
  28. {
  29. cout << "Cannot open file.n";
  30. return 1;
  31. }
  32. binary_file.write((char*)(&s1),sizeof(s1));//write number sample and timestamp
  33.  
  34. for (int i=0; i<countAnalCh;i++)
  35. {
  36. cout <<"Value analog channel: ";
  37. cin >> analog.Ak;
  38. binary_file.write((char*)(&analog.Ak),sizeof(analog.Ak));
  39.  
  40. }
  41. for (int j=0; j<countDiscrCh;j++)
  42. {
  43. cout <<"Value discret channel: ";
  44. cin >> discret.SM;
  45. binary_file.write((char*)(&discret.SM),sizeof(discret.SM));
  46.  
  47. }
  48.  
  49. binary_file.close();
  50.  
  51.  
  52. return 0;
  53. } {{/code}}


kytcenochka Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: kytcenochka (статус: Посетитель)
Вопрос отправлен: 2 апреля 2018, 13:45
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 2 апреля 2018, 15:02; участников в обсуждении: 1.
min@y™

min@y™ (статус: Доктор наук), 2 апреля 2018, 15:02 [#1]:

Тот, кто придумал текст задания - мудак.
int и unsigned int занимают по 4 байта.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.02 сек.