Как я могу разобрать строку с помощью C - PullRequest
0 голосов
/ 30 июня 2011

Ниже приведена моя строка

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"

сверху большой строки, используя язык Си.

Пожалуйста, помогите мне.

Ответы [ 4 ]

2 голосов
/ 30 июня 2011

Для меня это похоже на данные GPS и используется (и анализируется) во многих приложениях.

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

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

Вы можетебыть в состоянии сэкономить некоторое время, повторно используя некоторые другие парсеры с открытым исходным кодом.

2 голосов
/ 30 июня 2011

Вы говорите, какую линию хотите, но не сказали почему.Если вы скажете, что это за строка, которая делает ее нужной вам строкой, я мог бы прокомментировать, как вы ее найдете.

Но, в принципе, вы, вероятно, захотите разделить строку на строки,Вы можете использовать strtok(), чтобы взломать \n.Затем вы можете просмотреть строки, по одной за раз.

1 голос
/ 30 июня 2011

Команда strstr () , являющаяся частью стандартной библиотеки C, может использоваться для поиска подстроки в строке.

0 голосов
/ 25 февраля 2013

Вот высоко оптимизированный парсер NMEA, изначально написанный для микроконтроллеров: https://code.google.com/p/avr-nmea-gps-library/

Данные GPS NMEA обрабатываются в nmea.cpp и nmea.h, их легко настроить / добавить в ваш проект как классыкажется, инкапсулирует все, что вам нужно.

Интересно то, что этот код был написан для микроконтроллеров с очень небольшим объемом памяти и вычислительной мощностью, что делает этот код очень быстрой альтернативой, если также требуется производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...