Parse GPS String for Time and Coordinates

Code

#include <stdio.h>
#include <string.h>

void parse_gprmc(char *nmea) {
    int i =0;
    while( nmea[i]!=','){
        i++;
    }
    char fields[7];
    char Latitude[20], Longitude[20];

    int j = 0 ;
    i++;
    for(; nmea[i]!=','; i++){
        fields[j++]=nmea[i];
    }
    fields[j]='\0';
    i+=3;
    printf("Time: %.2s:%.2s:%.2s\n", fields, fields+2, fields+4);
    j=0;
    for( ;nmea[i]!=',' ;i++ ){
        Latitude[j++]= nmea[i];
    }

    i++;
    
    Latitude[j++] = ' ';
    Latitude[j++] = nmea[i];
    Latitude[j]='\0';

    i+=2;

    printf("Latitude: %s\n",Latitude);

    j=0;
    for( ;nmea[i]!=',' ;i++ ){
        Longitude[j++]= nmea[i];
    }
    i++;
    Longitude[j++] = ' ';
    Longitude[j++] = nmea[i];
    Longitude[j]='\0';

    printf("Longitude: %s",Longitude);
}

int main() {
    char nmea[100];
    fgets(nmea, sizeof(nmea), stdin);
    parse_gprmc(nmea);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

$GPRMC,123519,A,4807.038,N,01131.000,E

Expected Output

Time: 12:35:19 Latitude: 4807.038 N Longitude: 01131.000 E