#include <stdio.h>
#include <string.h>
void parse_gprmc(char *nmea) {
// Your logic here
char fields[6][10];
int string_idx = -1;
int string_count = -1;
int delimiter_flag = 0;
while(*nmea != '\0'){
if(*nmea == ','){
delimiter_flag = 1;
}
else if(string_count!=-1 && string_count<=5){
fields[string_count][string_idx++] = *nmea;
}
if(delimiter_flag){
if(string_count != -1){
fields[string_count][string_idx] = '\0';
}
string_idx = 0;
string_count++;
delimiter_flag = 0;
}
nmea++;
}
fields[string_count][string_idx] = '\0';
printf("Time: %.2s:%.2s:%.2s\n", &fields[0][0], &fields[0][2], &fields[0][4]);
printf("Latitude: %s %s\n", fields[2], fields[3]);
printf("Longitude: %s %s\n", fields[4], fields[5]);
return;
}
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