![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 26.09.2010
Сообщений: 1
|
![]()
Здравствуйте, у меня проблема! В задании по С++, которое мне дали нужно записать данные в объект и считать его. Для своего класса формат записи объектов таков: char [] m_Name, int m_Calories, double m_Sugar, float m_Massa, нулевой байт.
В своем коде: char* Ccandyesfile::CreateBinArray(int idx) { char len=(char)strlen(Ccandyesfile::cand yes->m_Candyes[idx]->getName()); int calory=Ccandyesfile::candyes->m_Candyes[idx]->getCalories(); double sugar=Ccandyesfile::candyes->m_Candyes[idx]->getSugar(); float mass=Ccandyesfile::candyes->m_Candyes[idx]->getMass(); int bufSize=GetBinArraySize(idx); char* pBuf = new char [bufSize]; int cIdx=0; strcpy(&pBuf[cIdx], Ccandyesfile::candyes->m_Candyes[idx]->getName()); cIdx+=len; memcpy_s(&pBuf[cIdx], bufSize-cIdx, &calory, sizeof(calory)); cIdx+=sizeof(calory); memcpy_s(&pBuf[cIdx], bufSize-cIdx, &sugar, sizeof(sugar)); cIdx+=sizeof(sugar); memcpy_s(&pBuf[cIdx], bufSize-cIdx, &mass, sizeof(mass)); cIdx+=sizeof(mass); memcpy_s(&pBuf[cIdx], bufSize-cIdx, '/0', 1); return pBuf; } bool Ccandyesfile::SaveToBinFile(char *filename) { int hFile; hFile=_creat(filename, _S_IWRITE | _S_IREAD); int j=Ccandyesfile::candyes->getCount(); for(int i=0; i<j; i++) { char* buffer=CreateBinArray(i); _write(hFile, buffer, GetBinArraySize(i)); delete [] buffer; } return true; close(hFile); } bool Ccandyesfile::AddFromBinFile(char *filename) { int hFile=_open(filename, _S_IREAD); int offset=0; if(hFile>0) { while(!_eof(hFile)) { char lname=0; char* tname = new char[lname]; _read(hFile, tname, (int)lname); tname[lname]='\0'; offset+=lname; _lseek(hFile, offset, SEEK_SET); int calory=0; _read(hFile, &calory, sizeof(int)); offset+=sizeof(int); _lseek(hFile, offset, SEEK_SET); double sugar=0; _read(hFile, &sugar, sizeof(double)); offset+=sizeof(double); _lseek(hFile, offset, SEEK_SET); float massa=0; _read(hFile, &massa, sizeof(float)); offset+=sizeof(float); _lseek(hFile, offset, SEEK_SET); Ccandyesfile::candyes->Add(tname, calory, sugar, massa); } close(hFile); return true; } return false; } я записала нулевой байт, но совершенно не представляю как его прочитать, какую функцию нужно использовать для того, чтобы прочитать его в bool Ccandyesfile::AddFromBinFile(char *filename). Подскажите Последний раз редактировалось TorrMoZZZZ; 26.09.2010 в 21:47. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вращение байта в файле | ilushka2306 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 19.06.2010 13:52 |
Деление байта пополам | necroant | Общие вопросы C/C++ | 19 | 18.06.2010 04:17 |
Сегмент байта (Паскаль) | Dizistar | Помощь студентам | 9 | 24.04.2010 22:54 |
Чтение, чтение и еще раз чтение | Alex Cones | Общие вопросы Delphi | 3 | 07.06.2009 15:28 |
Вывод байта в двоичном пердставлении (С++) | trollik | Помощь студентам | 6 | 01.09.2008 23:55 |