#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
char item[7][10] = {0};
int idx = 0;
char *p0 = nmea;
char *p1 = nmea;
do {
if ((*p1 == ',') || (*p1 == '\0')) {
char *tgt = item[idx++];
int size = 0;
while ((p0 < p1) && (size < (10 - 1))) {
*tgt++ = *p0++;
size++;
}
*tgt = '\0';
p0++;
}
} while (*p1++);
p0 = item[1];
printf("Time: %c%c:%c%c:%c%c\n",
p0[0], p0[1], p0[2], p0[3], p0[4], p0[5]);
printf("Latitude: %s %s\n", item[3], item[4]);
printf("Longitude: %s %s\n", item[5], item[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