有一个文件用于记录登录信息
文件使用结构体做的//.h
struct
{
BOOL bEnable;
BOOL bAdmin;
BOOL bOK;
}OO;//.cpp
...
OO oo;
oo.bEnable = 1;
oo.bAdmin = 0;
oo.bOK = 1;//每登录成功一次就将oo写入文件里面
//写入方式是
CFile logfile(_T("c:\\log.db"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::shareDenyWrite);
logfile.Write (&oo,sizeof(oo));
logfile.Flush ();
logfile.Close ();如何在读取的时候能够按照记录数逐条读取
文件使用结构体做的//.h
struct
{
BOOL bEnable;
BOOL bAdmin;
BOOL bOK;
}OO;//.cpp
...
OO oo;
oo.bEnable = 1;
oo.bAdmin = 0;
oo.bOK = 1;//每登录成功一次就将oo写入文件里面
//写入方式是
CFile logfile(_T("c:\\log.db"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::shareDenyWrite);
logfile.Write (&oo,sizeof(oo));
logfile.Flush ();
logfile.Close ();如何在读取的时候能够按照记录数逐条读取
logfile.Read(&xx, sizeof(OO));
logfile.Seek(n*sizeof(OO));//跳到第n条记录
fp = fopen("c:\\log.db","r");
if(fp == NULL)
{
AfxMessageBox("找不到文件!");
return;
}int nFileSize = 0;//获得文件的大小
while(!feof(fp))
{
fgetc(fp);
nFileSize ++;
}
rewind(fp);char *pBuf = new char[nFileSize];
fread(pBuf,1,nFileSize,fp);
fclose(fp);OO *pOo = (OO*)pBuf;
pOo->bEnable = .... ;//第一条记录pOo = (OO*)(pBuf + sizeof(OO));
pOo->bEnable = ....; //第二条记录.........if(pBuf)
{
delete pBuf;
pBuf = NULL;
}
又看到fopen,fwrite,fread了,真亲切我最讨厌CFile了。
:)
我也一样,以前用FILE *,现在用fstream,呵呵