从一个文本文件中循环读取一组数据。有不同的类型,比如,
char a;
char b;
UINT e;
char f;
char g;
UINT h;
......
想从这个文件中分别读出填入一个结构数组中
typedef struct proxy
{   
char sip[256];
char sMask[256];
UINT m_port;}PROXYST,* pPROXyst;
我不知怎样读取?谢谢!

解决方案 »

  1.   

    写的时候按结构写,读的时候按结构读。PROXYST p;
    readfile(handle, (char*)&P , sizeof(PROXYST), .....);
      

  2.   

    一次过把文件读取出来。
    再格式化读出来的数据。
    DWORD dwFileLen;
    // dwFileLen = GetFileLength()
    char *psData = new char[dwFileLen];readfile(....)PROXYST *pPROXYST = (PROXYST *)psData;
    long nCount = dwFileLen / sizeof(PROXYST );
    // 使用....
    pPROXYST[i]......
      

  3.   

    zhangqu_980371(能坚持一辈子的东西太少) 
    这个办法不错!值得学习!
    还有什么好的办法吗?
      

  4.   

    使用“CArchive”,使用方法见下例: //对文件进行写操作 CString strTemp; CFile mFile; mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); CArchive ar(&mFile,CArchive::store); ar<<strTemp; ar.Close(); mFile.Close(); //对文件进行读操作 CFile mFile; if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) return; CArchive ar(&mFile,CArchive::load); ar>>strTemp; ar.Close(); mFile.Close(); “CArchive”的“<<”和“>>”操作符用于简单数据类型的读写,对于“CObject”派生类的对象的存取要使用ReadObject()和WriteObject()。使用“CArchive”的ReadClass()和WriteClass()还可以进行类的读写,如: //存储CAboutDlg类 ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); //读取CAboutDlg类 CRuntimeClass*mRunClass=ar.Read Class(); //使用CAboutDlg类 CObject* pObject=mRunClass->CreateObject(); ((CDialog* )pObject)->DoModal(); 虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、使用和管理,如果要进行的文件操作只是简单的读写整行的字符串,建议使用“CStdioFile”,用它来进行此类操作非常方便,如下例: CStdioFile mFile; CFileException mExcept; mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); CString string="I am a string."; mFile.WriteString(string); mFile.Close();