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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 6 687

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

Я новичок в с++. Подскажите, что можно исправить, да и вообще какие еще есть варианты решения такой задачи.

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

Каким более разумным способом можно заполнить значение каналов (чтоб не с консоли)? Так как количество каналов может изменяться, откуда будут поступать данные пока неизвестно.

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


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

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


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

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

min@y™ (статус: Доктор наук), 30 марта 2018, 17:57 [#1]:

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

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

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