#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
int index =0,semi_num=0;
char time[10],lati[50],longi[50],lat_n,long_e;
while(*nmea!='\0')
{
if(*nmea==',')
{
index =0;
semi_num++;
}
else
{
// printf("*nmea=%c \n",*nmea);
if(semi_num==1) // time
{
time[index]=*nmea;
time[index+1]='\0';
// printf("time[index]=%c ",time[index]);
}
else if(semi_num==3)
{
lati[index]=*nmea;
lati[index+1]='\0';
// printf("lati[index]=%c ",lati[index]);
}
else if(semi_num==4)
{
lat_n=*nmea;
// printf("lat_n=%c ",lat_n);
}
else if(semi_num==5)
{
longi[index]=*nmea;
longi[index+1]='\0';
// printf("longi[index]=%c ",longi[index]);
}
else if(semi_num==6)
{
long_e=*nmea;
// printf("long_e=%c ",long_e);
}
index++;
}
nmea++;
}
// //print data
// printf("Time: ");
// for(int i=0; i<10; i++)
// {
// if((time[i+1]=='\0')||(time[i+1]=='\n'))
// {
// printf("%c\n",time[i]);
// break;
// }
// printf("%c",time[i]);
// if((i%2)!=0) printf(":");
// }
// printf("Latitude: ");
// for(int i=0; i<50; i++)
// {
// printf("%c",lati[i]);
// if((lati[i]=='\0')||(lati[i]=='\n')) break;
// }
// printf(" %c\n",lat_n);
// printf("Longitude: ");
// for(int i=0; i<50; i++)
// {
// printf("%c",longi[i]);
// if((longi[i]=='\0')||(longi[i]=='\n')) break;
// }
// printf(" %c\n",long_e);
printf("Time: %c%c:%c%c:%c%c\n", time[0], time[1]
, time[2], time[3]
, time[4], time[5]);
// format and print Latittude
printf("Latitude: %c%c%c%c.%c%c%c %c\n", lati[0], lati[1]
, lati[2], lati[3]
, lati[5], lati[6]
, lati[7], lat_n);
// format and print Longitude
printf("Longitude: %c%c%c%c%c.%c%c%c %c\n", longi[0], longi[1]
, longi[2], longi[3]
, longi[4], longi[6]
, longi[7], longi[8]
, long_e);
}
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