Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2010, 21:44   #1
TorrMoZZZZ
Новичок
Джуниор
 
Регистрация: 26.09.2010
Сообщений: 1
По умолчанию Чтение 0 байта

Здравствуйте, у меня проблема! В задании по С++, которое мне дали нужно записать данные в объект и считать его. Для своего класса формат записи объектов таков: 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.
TorrMoZZZZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вращение байта в файле 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