#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
char time[15] = {0};
char latitude[15] = {0};
char longitude[15] = {0};
char NS[5] = {0};
char EW[5] = {0};
int char_cnt = 0;
int delim_cnt = 0;
for (int i = 0; nmea[i] != '\0'; i++)
{
if (nmea[i] == ',')
{
delim_cnt++;
char_cnt = 0;
continue;
}
// time
if (delim_cnt == 1)
{
time[char_cnt] = nmea[i];
}
// lat
else if (delim_cnt == 3)
{
latitude[char_cnt] = nmea[i];
}
// NS
else if (delim_cnt == 4)
{
NS[char_cnt] = nmea[i];
}
// long
else if (delim_cnt == 5)
{
longitude[char_cnt] = nmea[i];
}
// EW
else if (delim_cnt == 6)
{
EW[char_cnt] = nmea[i];
}
char_cnt++;
}
// print UTC
printf("Time: %c%c:%c%c:%c%c\n", time[0], time[1], time[2], time[3], time[4], time[5]);
// print Lat with NS
printf("Latitude: %c%c%c%c%c%c%c%c %c\n", latitude[0], latitude[1], latitude[2], latitude[3], latitude[4], latitude[5], latitude[6],latitude[7], NS[0]);
// print long with EW
printf("Longitude: %c%c%c%c%c%c%c%c%c %c\n", longitude[0], longitude[1], longitude[2], longitude[3], longitude[4], longitude[5], longitude[6], longitude[7], longitude[8], EW[0]);
}
int main() {
char nmea[100];
fgets(nmea, sizeof(nmea), stdin);
parse_gprmc(nmea);
return 0;
}
Input
$GPRMC,123519,A,4807.038,N,01131.000,E
Expected Output
Time: 12:35:19 Latitude: 4807.038 N Longitude: 01131.000 E