从.txt文件中提取数据:解决方案
从.txt文件中提取数据:
我的.txt文件中有下面一大堆的数据如下:
mydata.txt如下:
************************************************************************************************************************************
*RB-0060 BOC JIANG NING S TELLER DAILY REPORT DATE: 070901 PAGE: 1 *
************************************************************************************************************************************
BANK:4447807 TELLER:00306
VCH SU TIME TX AC-NO DC CHR CUU TX-AMT PER DUE-DATE MEMO REF-NO NAME
----------------------------------------------------------
000002 71 082555 0011 4447807010000000000071 C 00 01 250,000.00
TELLER TXN 1006 TOT: 000
BANK:4447807 TELLER:00309
VCH SU TIME TX AC-NO DC CHR CUU TX-AMT PER DUE-DATE MEMO REF-NO NAME
----------------------------------------------------------
000001 71 082555 0011 4447807010000000000071 D 00 01 250,000.00
000003 00 083037 4447807010100084708900 D 00 01 3,590.00 11 3380678 刘敏
000004 00 083444 4450927010100004255800 C 00 01 500.00 #11 0539171 杨志坚
000005 71 083609 0087 4447807010000000000000 C 00 01 5.00
000006 71 083911 4447803011000900097031 D 00 01 118.33 24 20090519 73 0000006 凌晨宇
000007 71 083911 3590 4447803011000900097031 D 00 01 24 20090519 41 0000006 凌晨宇
我想要把TX和TX-AMT下的两列数据提取出来,该用什么函数啊?
------解决方案--------------------
是空格还是tab键 ?你首先要弄清楚。
然后就简单了啊,就是字符串分割问题么
------解决方案--------------------
说起来很复杂,大体就是你一行一行读入数据,然后搜索空格,搜到第几个空格后面的数据是你需要的就记下来,然后再读入下一行
------解决方案--------------------
比较的麻烦,很乱。中间隔的应该是空格,只能根据这个来判断。
------解决方案--------------------
你可以参考下scanf的高级功能或者使用正则表达式,在网上找找,有很多资料
------解决方案--------------------
用fscanf试试看
------解决方案--------------------
中间的分隔符是空格吗?还是tab
如果是空格,那空格数一样吗?
如果一样的话,可以考虑导入到数据库
------解决方案--------------------
我的.txt文件中有下面一大堆的数据如下:
mydata.txt如下:
************************************************************************************************************************************
*RB-0060 BOC JIANG NING S TELLER DAILY REPORT DATE: 070901 PAGE: 1 *
************************************************************************************************************************************
BANK:4447807 TELLER:00306
VCH SU TIME TX AC-NO DC CHR CUU TX-AMT PER DUE-DATE MEMO REF-NO NAME
----------------------------------------------------------
000002 71 082555 0011 4447807010000000000071 C 00 01 250,000.00
TELLER TXN 1006 TOT: 000
BANK:4447807 TELLER:00309
VCH SU TIME TX AC-NO DC CHR CUU TX-AMT PER DUE-DATE MEMO REF-NO NAME
----------------------------------------------------------
000001 71 082555 0011 4447807010000000000071 D 00 01 250,000.00
000003 00 083037 4447807010100084708900 D 00 01 3,590.00 11 3380678 刘敏
000004 00 083444 4450927010100004255800 C 00 01 500.00 #11 0539171 杨志坚
000005 71 083609 0087 4447807010000000000000 C 00 01 5.00
000006 71 083911 4447803011000900097031 D 00 01 118.33 24 20090519 73 0000006 凌晨宇
000007 71 083911 3590 4447803011000900097031 D 00 01 24 20090519 41 0000006 凌晨宇
我想要把TX和TX-AMT下的两列数据提取出来,该用什么函数啊?
------解决方案--------------------
是空格还是tab键 ?你首先要弄清楚。
然后就简单了啊,就是字符串分割问题么
------解决方案--------------------
说起来很复杂,大体就是你一行一行读入数据,然后搜索空格,搜到第几个空格后面的数据是你需要的就记下来,然后再读入下一行
------解决方案--------------------
比较的麻烦,很乱。中间隔的应该是空格,只能根据这个来判断。
------解决方案--------------------
你可以参考下scanf的高级功能或者使用正则表达式,在网上找找,有很多资料
------解决方案--------------------
用fscanf试试看
------解决方案--------------------
中间的分隔符是空格吗?还是tab
如果是空格,那空格数一样吗?
如果一样的话,可以考虑导入到数据库
------解决方案--------------------
- C/C++ code
void CTest0Dlg::OnButton7() { CFile file; if(file.Open(_T("D:\\2.txt"),CFile::modeRead )) { int rt = 0; TCHAR temp[50]; TCHAR usefull[20]; TCHAR h = '\0'; TCHAR l0 = '\0'; TCHAR l1 = '\0'; TCHAR l2 = '\0'; CString str, str1; str = " TX TX-AMT \r\n----------\r\n"; str1.GetBufferSetLength(20); do{ str1.GetBufferSetLength(4); rt = file.Read(&h,1); if(h == '0' && l0 == ' ' && l1 == ' ' && l2 == '\n') { file.Read(temp,19); file.Read(usefull, 4); strncpy(str1.GetBuffer(4), usefull, 4); str1.ReleaseBuffer(); str += str1; str1.Empty(); str1.GetBufferSetLength(14); file.Read(temp,41); file.Read(usefull, 14); strncpy(str1.GetBuffer(14), usefull, 14); str1.ReleaseBuffer(); str += str1; str1.Empty(); str += "\r\n"; } l2=l1; l1=l0; l0=h; }while(rt); GetDlgItem(IDC_EDIT1)->SetWindowText(str); } }