麻烦各位了:
我用fgets()函数从文件一行一行的读,但读出的数据是整行的,而我需要的是后面的数据,如:
文件名:filename
取水样体积:20ml
我需要的是后面的filename 20ml
还有我的文件的格式如下:
 
文件名:24
 
说  明:
 
取水样体积: 200 mL
 
萃取剂体积: 20 mL
 
波数2930(1/cm)吸光度=0.4225(A)
 
波数2960(1/cm)吸光度=0.0506(A)
 
波数3030(1/cm)吸光度=0(A)
 
水样中的含油量:1.7503mg/L现在这里第1,3,5行等都是空行,我要如何解决读取的时空行部读取!!
谢谢!!

解决方案 »

  1.   

    如果这样的话,可以考虑文件用ini文件啊
    然后ini文件的读取就比较简单
      

  2.   

    这个只有你自己定义解析字符串的规则了 比如只取:和=后面的阿拉伯数字或者像楼上说的,也可以用ini文件来处理
    http://dev.csdn.net/develop/article/46/46139.shtm
      

  3.   

    哦,这样啊
    那么读出的数据是个字符窜
    如文件名:filename
    然后找到那个:的位置
    然后取出:后面的那个子窜如果用CString的话,可以用find和mid等这些成员函数来取子窜~~
      

  4.   

    现在这里第1,3,5行等都是空行,我要如何解决读取的时空行部读取!!你读到空行就continue吧。
      

  5.   

    我用的就是CString 我刚用了find
    我的程序是这样写的:
    int n=strBuf.Find("文件名:");
    if(n>=0)
    strBuf.TrimLeft("文件名:");
    可最后读出的还是整行数据
    为什么??
      

  6.   

    手头没有msdn
    所以记不住CString的那么多成员函数你获得了:的那个位置的序号
    再去研究一下mid成员函数,这是取得子窜的
    或者好像还有right的成员函数??
    不记得了,你去msdn上查一下呢
      

  7.   

    CStdioFile file; if ( !file.Open("c:\\1.txt", CFile::modeRead) ) { AfxMessageBox("can not open file!"); return; } CString strLine; while (file.ReadString(strLine)) {
    strLine.TrimLeft();
    strLine.TrimRight(); if ( strLine.IsEmpty() )
    continue; if ( strLine.Find(':') )
      ....
    else if ( strLine.Find('=') )
    ... } file.Close();