从文本文件提取数据

kk706 2006-01-23 10:09:23
我想从一个文本文件中提取每条"$GPGGA"信息中第2个逗号之后的数据("4002.1396"),然后对所有提取的数据进行求和与排序等的操作,请问需要用到的类与函数是什么呢?谢谢.

部分文本文件如下:

$PMCAG,900,3-D,H*5F
$PMCAG,907,50,T,M,K,40517,31948,81.0,023950.00,A*44
$PMCAG,912,4,P,,,00045,08,0.20,010,,,,,,,,,,*3E
$GPGGA,023951.00,4002.1396,N,11618.1675,E,1,07,1.4,81.0,M,-6.6,M,,*47
$GPGLL,4002.1396,N,11618.1675,E,023951.00,A*09
$GPGSA,A,3,19,27,08,03,28,11,17,,,,,,2.3,1.4,1.8*35
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
屋顶上的老猫 2006-01-23
  • 打赏
  • 举报
回复
strtok()
chengdi47535182 2006-01-23
  • 打赏
  • 举报
回复

http://www.stlchina.org/twiki/bin/view.pl/Main/STLChina
去看看吧 ,可能有你需要的东西
BombZhang 2006-01-23
  • 打赏
  • 举报
回复
首先用CStdioFile读出每行数据,然后用下面这个函数解析数据,解析的结果的第三个就是你要的。

其中source是待解析的数据,seprator是分割符,这里用","就可以了,count是共分割为多少个子串。返回值就是得到的子串数组,取其中的第三个。用完后用第二个函数释放内存

char** ExtractStr(char *source, char *seprator, int *count)
{
int i;
char *token;
char **pstr;
char **ptr;

*count=0;

pstr=(char **)malloc(200*sizeof(char *));
ptr=pstr;

for(i=0;i<200;i++)
pstr[i]=(char*)malloc(50*sizeof(char));

token = strtok(source, seprator);

if(token!=NULL)
{
strcpy(*ptr, token);
(*count)++;
*ptr++;

while(token!=NULL)
{
token = strtok(NULL, seprator);

if(token!=NULL)
{
strcpy(*ptr, token);
(*count)++;
*ptr++;
}
}
}

if(*count==0)
{
FreeStrings(pstr,200);
return NULL;
}
else
return pstr;
}



void FreeStrings(char **lpstr, int count)
{
if(lpstr==NULL)
{
return;
}

for(int i=0;i<count;i++)
{
if(lpstr[i]!=NULL)
free(lpstr[i]);
}

free(lpstr);
}
asdfg014 2006-01-23
  • 打赏
  • 举报
回复
FILE *fp;
fp=fopen(Path,"rb");
if(fp==NULL)
{
return;
}
char Buf[200];
while(!feof(fp))
{
memset(Buf,0,200);
fgets(Buf,200,fp);
if(strstr(Buf,"$GPGGA"&&Buf[0]!='\0')
{
char *tip;
tip=strtok(Buf,",");
tip=strtok(NULL,",");
while(true)
{
tip=strtok(NULL,",");
if(tip==NULL)
{
break;
}
printf("%s ",tip);
}
}
}

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧