#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
//check for the starting $GPRMS identifier
int i=0;
char *token;
char *fields[7];
token = strtok(nmea, ",");
while(token != NULL && i < 7){
fields[i++] = token;
token = strtok(NULL, ",");
}
int hour,minute,seconds;
if(i>= 3 && strcmp(fields[2],"A") == 0){
//printf("--- GPRMC Data ---\n");
// Time (HHMMSS.SSS)
sscanf(fields[1],"%2d%2d%2d",&hour,&minute,&seconds);
printf("Time: %02d:%02d:%02d\n", hour,minute,seconds);
// Latitude (DDMM.MMMM format)
printf("Latitude: %s %s\n", fields[3], fields[4]);
// Longitude (DDDMM.MMMM format)
printf("Longitude: %s %s\n", fields[5], fields[6]);
}
}
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