#include <stdio.h> #include <string.h> void parse_gprmc(char *nmea) { char field[7][20]; int field_index = 0, char_index = 0, i = 0; while (nmea[i] != '\0' && field_index < 7) { if (nmea[i] == ',') { field[field_index][char_index] = '\0'; field_index++; char_index = 0; } else { if (char_index < 19) field[field_index][char_index++] = nmea[i]; } i++; } field[field_index][char_index] = '\0'; char time_str[9]; time_str[0] = field[1][0]; time_str[1] = field[1][1]; time_str[2] = ':'; time_str[3] = field[1][2]; time_str[4] = field[1][3]; time_str[5] = ':'; time_str[6] = field[1][4]; time_str[7] = field[1][5]; time_str[8] = '\0'; printf("Time: %s\n", time_str); printf("Latitude: %s %s\n", field[3], field[4]); printf("Longitude: %s %s\n", field[5], field[6]); } int main() { char nmea[100]; fgets(nmea, sizeof(nmea), stdin); parse_gprmc(nmea); return 0; }
Test Cases
Test Results
Input
$GPRMC,123519,A,4807.038,N,01131.000,E
Expected Output
Time: 12:35:19 Latitude: 4807.038 N Longitude: 01131.000 E