#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
const char GPS_S[] = "$GPRMC";
const char dlmtr[] = ",";
char* token = strtok(nmea, dlmtr);
if (strcmp(token, GPS_S)==0){
// parse next tokens:
//parse time
token = strtok(nmea+7, dlmtr);
// format and print time
printf("Time: %c%c:%c%c:%c%c\n", nmea[7], nmea[8]
, nmea[9], nmea[10]
, nmea[11], nmea[12]);
// format and print Latittude
printf("Latitude: %c%c%c%c.%c%c%c %c\n", nmea[16], nmea[17]
, nmea[18], nmea[19]
, nmea[21], nmea[22]
, nmea[23], nmea[25]);
// format and print Longitude
printf("Longitude: %c%c%c%c%c.%c%c%c %c\n", nmea[27], nmea[28]
, nmea[29], nmea[30]
, nmea[31], nmea[33]
, nmea[34], nmea[35]
, nmea[37]);
}
else{
// not a valid gps format string
printf("ERROR: Invalid string format - not starting with $GPRMC,");
}
}
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