我的数据文件如下(input.dat)
100 2323
123 2090
344 3434
343 3454
344 4545
434 3434
我的代码如下
CString path;
CFileDialog  filedlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,NULL);
if(filedlg.DoModal() == IDOK)
{
path = filedlg.GetPathName();
int data;
CFile File;
File.Open(path,CFile::modeRead);
UINT uCount = File.Read(&data,sizeof(int));
int Line = 0;
CDC *pDC = GetDC();
while(uCount == sizeof(int))
{
char str[10];
sprintf(str,"%d",data);
pDC->TextOut(0,Line,str,sizeof(str));
Line += 15;
}
}
为什么不对呢?难道CFile只能读字符串的文件吗?
请高手给一段示范代码

解决方案 »

  1.   

    你的文件是文本方式的,你的读取方式是二进制方式的所以不对。
    你需要按照字符串的方式按行读取,然后使用sscanf把字符串转换成为数字就可以了
      

  2.   

    如果按字符串的方式读取
    但是怎么知道一个数字的位数呢?
    比如
    3434 343443
    23 45454
    如果
    File.Read(str,4);
    对第二行读得又不对了。
      

  3.   

    UINT uCount = File.Read(&data,sizeof(int));
    读的是四个字节的整形数,而不是字符串数字,
    可以用一行一行的读,然后分析
      

  4.   

    VC的文件函数可以读些任何字符的文件,你可以把文件中的字符作为数据读出,例如一次读取一个或者全部或者几个,如果你的文件的内容是使用“\n”作为换行标志,那么判断一下就可以了。