#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
char len = 0;
char numOfComma = 0;
unsigned char numTimeH = 0;
unsigned char numTimeM = 0;
unsigned char numTimeS = 0;
char hour[3];
char min[3];
char sec[3];
char myposlat[100];
char myposlong[100];
char latP;
char longP;
unsigned char indxLat = 0, indxLong = 0;
while(*(nmea + len) != '\0')
{
if(*(nmea + len) == ',')
{
numOfComma += 1;
}
else if (numOfComma > 0)
{
if(numOfComma == 1)
{
if (numTimeH < 2)
{
hour[numTimeH++] = *(nmea + len);
}
else if (numTimeM < 2)
{
min[numTimeM++] = *(nmea + len);
}
else
{
sec[numTimeS++] = *(nmea + len);
}
}
else if(numOfComma == 2)
{
// do noting
}
else if (numOfComma == 3)
{
myposlat[indxLat++] = *(nmea + len);
}
else if(numOfComma == 4)
{
latP = *(nmea + len);
}
else if (numOfComma == 5)
{
myposlong[indxLong++] = *(nmea + len);
}
else if (numOfComma == 6)
{
longP = *(nmea + len);
}
}
else
{
// do noting
}
len += 1;
}
myposlat[indxLat] = '\0';
myposlong[indxLong] = '\0';
hour[numTimeH] = '\0';
min[numTimeM] = '\0';
sec[numTimeS] = '\0';
printf("Time: %s:%s:%s\n", hour, min, sec);
printf("Latitude: %s %c\n", myposlat, latP);
printf("Longitude: %s %c \n", myposlong, longP);
}
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