我怎么能用c解析一个字符串

时间:2011-06-30 18:37:33

标签: c

以下是我的字符串

char test[1000]="$GPGSA,A,3,14,20,22,25,31,32,,,,,,,2.4,1.4,1.9*3A
    $GPGSV,4,1,16,31,76,060,35,14,28,070,34,20,32,309,32,32,61,309,32*72\n
    $GPGSV,4,2,16,25,21,053,29,24,37,258,29,23,14,277,27,12,,,21*44\n
    $GPGSV,4,3,16,22,13,133,20,11,20,272,,16,11,161,,30,,,*4F\
    n$GPGSV,4,4,16,29,,,,28,,,,27,,,,26,,,*7E\n
    $GPGGA,150427.8,4001.022852,N,10505.269674,W,1,06,1.4,1559.6,M,-21.0,M,,*53\n
    $PQXFI,150427.8,4001.022852,N,10505.269674,W,1559.6,35.12,25.46,2.05*4A\n
    $GPVTG,nan,T,nan,M,0.0,N,0.0,K,A*23\n
    $GPRMC,150427.8,A,4001.022852,N,10505.269674,W,0.0,,280611,,,A*50";

我想获得字符串

"$GPGGA,150427.8,4001.022852,N,10505.269674,W,1,06,1.4,1559.6,M,-21.0,M,,*53\n"

使用C语言从上面的大字符串。

请帮帮我。

4 个答案:

答案 0 :(得分:2)

你说你想要哪一行,但你没有说明原因。如果你说这条线是什么,使它成为你追求的线,那么我可以评论你如何找到它。

但基本上,你可能想把字符串分成几行。您可以使用strtok()打开\n。然后,您可以一次检查一行。

答案 1 :(得分:2)

这看起来像GPS数据,并在许多应用程序中使用(和解析)。

http://mbed.org/users/todotani/notebook/gps-nmea-parser/

http://www.edaboard.com/thread204021.html

您可以通过重新使用其他一些开源解析器来节省一些时间。

答案 2 :(得分:1)

strstr()命令是标准C库的一部分,可用于查找字符串中的子字符串。

答案 3 :(得分:0)

这是一个高度优化的NMEA解析器,最初是为微控制器编写的:https://code.google.com/p/avr-nmea-gps-library/

GPS NMEA数据在nmea.cpp和nmea.h中处理,易于自定义/添加到您的项目中,因为这些类似乎封装了您需要的所有内容。

这里有趣的是,这段代码是为微控制器编写的,具有非常小的内存和处理能力,如果还需要性能,这个代码是一个非常快速的替代方案。