#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
if (!nmea || nmea[0] == '\0') return;
int comma_cnt = 0;
//mảng để lưu data
char tim[10] = {0};
char lat[10] = {0}, ns[5] = {0};
char lon[10] = {0}, ew[5] = {0};
//idx cho từng mảng
int t = 0, la = 0, n = 0, lo = 0, e = 0;
char *ptr = nmea; //đảm bảo con trỏ nmea không bị xê dịch (dự phòng cho malloc)
while (*ptr != '\0') {
if (*ptr == ',')
comma_cnt++;
else { //ghi data đúng mảng tương ứng
if (comma_cnt == 1) tim[t++] = *ptr;
if (comma_cnt == 3) lat[la++] = *ptr;
if (comma_cnt == 4) ns[n++] = *ptr;
if (comma_cnt == 5) lon[lo++] = *ptr;
if (comma_cnt == 6) ew[e++] = *ptr;
else if (comma_cnt > 6) break;
}
ptr++;
}
printf("Time: %c%c:%c%c:%c%c\n", tim[0], tim[1], tim[2], tim[3], tim[4], tim[5]);
printf("Latitude: %s %s\n", lat, ns);
printf("Longitude: %s %s\n", lon, ew);
}
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