声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1735|回复: 2

[编程技巧] textscan读取数据文件

[复制链接]
发表于 2012-4-8 11:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 neusut 于 2012-4-8 11:31 编辑

想从文本文件中读取数据当成字符串读出 起始 字符为 "|" 结束为 ";", 也就是 '| ... ;',有时候";" 带有换行符,有时候没有,所以也不能用 fgets 或者fgetl 等来读取. 关键最后一个";"之前是几十兆的binary数据块. 想把最后一个单独处理,因为这个一个配对理包含了binary数据的长度,binary的起始位置要有了前面的所有 (n-1) ";", 才能知道.
看了很多函数,最后可能的是textscan. 看了textscan的帮助,用起来还是解决不了问题. 现在的想法是找出有多少个这样的 '|....;'.
问题一,怎样在文件中搜出 有多少个"|" 或者";"?
有没有其他我忽略掉的读取方法?
sample1.txt
  1. |CF,2,1,1;|CK,1,3,1,1;
  2. |NO,1,19,0,11,imc Devices,0,;
  3. |CG,1,5,1,1,1;
  4. |CD,1,16,5E-4,1,1,s,0,0,0;
  5. |NT,1,27, 3, 3,2009, 9,58, 8.9972126;
  6. |CC,1,3,1,1;
  7. |CP,1,16,1,2,4,16,0,0,1,0;
  8. |Cb,1,30,1,0,1,1,0,96408,0,96408,1,0,0,;
  9. |CR,1,33,1,1.22077763535372E-2,0,1,5,m/s^2;
  10. |CN,1,30,0,0,0,18,_acceleration,0,;
  11. |CG,1,5,1,1,1;
  12. |CD,1,16,5E-4,1,1,s,0,0,0;
  13. |NT,1,27, 3, 3,2009, 9,58, 8.9972126;
  14. |CC,1,3,1,1;
  15. |CP,1,16,2,2,4,16,0,0,1,0;
  16. |Cb,1,34,1,0,2,1,96408,96408,0,96408,1,0,0,;
  17. |CR,1,30,1,3.051944088384301E-4,0,1,1,V;
  18. |CN,1,24,0,0,0,12,_Switch,0,;
  19. |CG,1,5,1,1,1;
  20. |CD,1,16,5E-4,1,1,s,0,0,0;
  21. |NT,1,27, 3, 3,2009, 9,58, 8.9972126;
  22. |CC,1,3,1,1;
  23. |CP,1,16,3,2,4,16,0,0,1,0;
  24. |Cb,1,35,1,0,3,1,192816,96408,0,96408,1,0,0,;
  25. |CR,1,28,1,-2.441555270707441,0,1,1,N;
  26. |CN,1,32,0,0,0,20,_force,0,;
  27. |CG,1,5,1,1,1;
  28. |CD,1,16,5E-4,1,1,s,0,0,0;
  29. |NT,1,27, 3, 3,2009, 9,58, 8.9972126;
  30. |CC,1,3,1,1;
  31. |CP,1,16,4,2,4,16,0,0,1,0;
  32. |Cb,1,35,1,0,4,1,289224,96408,0,96408,1,0,0,;
  33. |CR,1,30,1,6.103888176768602E-4,0,1,1,m;
  34. |CN,1,26,0,0,0,14,_s002_Distance,0,;
  35. |CS,1,385634,1,binary 数据块;
复制代码
sample2.txt
  1. |CF,2,1,1;|CK,1,    3,1,1;TTTTTTTTTTTTTT|NO,1,   19,0,11,imc Devices,0,;|CG,1,    5,1,1,1;|CD,2,   57,1.000000000000000E-3,1,1,s,0,0,0, +0.000000000000000E+0,1;|NT,1,   27, 1, 1,1980, 0, 0, 0.0000000;|CC,1,    3,1,1;|CP,1,   16,5,2,4,16,0,0,1,0;|CR,1,   52,1,1.181712751022401E-2,0.000000000000000E+0,1,4,km/h;|CN,1,   23,0,0,0,11,Radar_speed,0,;|Cb,1,  100,         1,0,5,1,0,     13164,         0,     13164,1, +0.000000000000000E+0, +9.849155425240001E+8,;|CS,1,     16395,         1,binary数据块;
复制代码
回复
分享到:

使用道具 举报

发表于 2012-4-9 01:10 | 显示全部楼层
好奇, 什麼数据这麼没规律!?
或许试试fscanf
 楼主| 发表于 2012-4-9 21:25 | 显示全部楼层
一个德国仪器的采集到的数据.按照该公司公布的信息,数据结构应该为第一种数据. 这两个数据的区别是第二个没有换行.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-8 07:51 , Processed in 0.198264 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表