#include <stdio.h> #include <string.h> void parse_gprmc(char *nmea) { // Your logic here char fields[6][20]; int field_num = 0; int char_idx = 0; char *ptr = nmea; while (*ptr != ',' && *ptr != '\0') ptr++; if (*ptr == ',') ptr++; while (*ptr != '\0' && field_num < 6) { if (*ptr == ',') { fields[field_num][char_idx] = '\0'; field_num++; char_idx = 0; } else { fields[field_num][char_idx++] = *ptr; } ptr++; } if (char_idx > 0) { fields[field_num][char_idx] = '\0'; } printf("Time: %.2s:%.2s:%.2s\n", fields[0], fields[0]+2, fields[0]+4); printf("Latitude: %s %s\n", fields[2], fields[3]); printf("Longitude: %s %s\n", fields[4], fields[5]); } 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