#include <stdio.h>
#include <string.h>
// void parse_gprmc(char *nmea) {
// // Your logic here
// char time[9];
// char lat[20];
// char lat_dir;
// char lon[20];
// char lon_dir;
// int index = 0;
// while(nmea[index] != ',')
// {
// index++;
// }
// index++;
// int i=0;
// while(nmea[index] != ',')
// {
// time[i++] = nmea[index++];
// if(i == 2)
// {
// i++;
// }
// if(i==5)
// {
// i++;
// }
// }
// time[i] = '\0';
// time[2] = ':';
// time[5] = ':';
// // printf("%s\n", time);
// index++;
// while(nmea[index] != ',')
// {
// index++;
// }
// index++;
// i=0;
// while(nmea[index] != ',')
// {
// lat[i++] = nmea[index++];
// }
// lat[i] = '\0';
// // printf("%s\n", time);
// // printf("%s\n", lat);
// index++;
// while(nmea[index] != ',')
// {
// lat_dir = nmea[index++];
// }
// // printf("%c\n", lat_dir);
// index++;
// i=0;
// while(nmea[index] != ',')
// {
// lon[i++] = nmea[index++];
// }
// lon[i] = '\0';
// // printf("%s\n", lon);
// index++;
// while(!((nmea[index] == ',') || (nmea[index] == '\0')))
// {
// lon_dir = nmea[index++];
// }
// // printf("%c\n", lon_dir);
// printf("Time: %s\n", time);
// printf("Latitude: %s %c\n", lat, lat_dir);
// printf("Longitude: %s %c\n", lon, lon_dir);
// }
void parse_gprmc(char *nmea) {
char *fields[7];
int index = 0;
char *token = strtok(nmea, ",");
while((token != NULL) && (index<7))
{
fields[index++] = token;
token = strtok(NULL, ",");
}
char *t = fields[1];
printf("Time: %.2s:%.2s:%.2s\n", t, t+2, t+4);
// Latitude
printf("Latitude: %s %s\n", fields[3], fields[4]);
// Longitude
printf("Longitude: %s %s\n", fields[5], fields[6]);
// for(int i=0; i<20; i++)
// {
// printf("%c", nmea[i]);
// }
}
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