注册 登录
编程论坛 C++ Builder

数据读取的问题

tb361 发布于 2008-06-05 19:12, 1099 次点击
如何将文本文件(.txt)中的数据一次读入到一个已定义的数组中呢?
请各位大虾帮帮忙啊,在线等
给几条具体程序最好不过了。
谢谢啊!~!
1 回复
#2
windlzf2008-06-06 16:36
BCB F1帮助就有例子啊
The following example uses a button, a string grid, and an Open dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the specified file is opened, read into a buffer, and closed. Then the buffer is displayed in two columns of the string grid. The first column contains the character values in the buffer. The second column contains the numeric values of the characters in the buffer.

void __fastcall TForm1::Button1Click(TObject *Sender)

{
  int iFileHandle;
  int iFileLength;
  int iBytesRead;
  char *pszBuffer;
  if (OpenDialog1->Execute())
  {
    try
    {
      iFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
      iFileLength = FileSeek(iFileHandle,0,2);
      FileSeek(iFileHandle,0,0);
      pszBuffer = newchar[iFileLength+1];
      iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
      FileClose(iFileHandle);

      for (int i=0;i<iBytesRead;i++)
      {
        StringGrid1->RowCount += 1;
        StringGrid1->Cells[1][i+1] = pszBuffer[i];
        StringGrid1->Cells[2][i+1] = IntToStr((int)pszBuffer[i]);
      }
      delete [] pszBuffer;
    }
    catch(...)
    {
      Application->MessageBox("Can't perform one of the following file operations: Open, Seek, Read, Close.", "File Error", IDOK);
    }
  }
}

改一改就可以啦:

int ReadTxtFile(char *fileName)
{
        int iFileHandle;
        int iFileLength;
        int iBytesRead;
        char *pszBuffer;

        iFileHandle = FileOpen(fileName, fmOpenRead);
        if(iFileHandle==-1) {ShowMessage("Can't open file");return 0;}
        iFileLength = FileSeek(iFileHandle,0,2);
        FileSeek(iFileHandle,0,0);
        pszBuffer = new char[iFileLength+1];
        iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);//读取出来了
        //使用吧
        delete []pszBuffer;//用完了释放掉
        FileClose(iFileHandle);
        return 1;
}
1