#include <stdio.h> #include <string.h> void parse_gprmc(char *nmea) { // Your logic here char *tokens[6]; nmea += 7; //skips $GPRMC, int count = 0; char *start = nmea; while(*nmea && count<6){ if(*nmea==','){ *nmea = '\0'; //end the current token directly in buffer tokens[count++] = start; //assign the starting address to tokens pointer start = nmea + 1; } nmea++; } if(count<6 && *nmea=='\0'){ //end of string buffer tokens[count++] = start; } printf("Time: %.2s:%.2s:%.2s\n", tokens[0], tokens[0]+2, tokens[0]+4); printf("Latitude: %s %s\n", tokens[2], tokens[3]); printf("Longitude: %s %s", tokens[4], tokens[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