102. Parse GPS String for Time and Coordinates

Back To All Submissions
Previous Submission
Next Submission

Code

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


void parse_gprmc(char *nmea) {
    int index = 7;
    int state = 0; // 0: Time, 1: Skip, 2: Lat, 3: LatDir, 4: Lon, 5: LonDir

    printf("Time: ");
    while(nmea[index] != '\0') {
        if(nmea[index] == ',') {
            state += 1;
            index++;

            if(state == 2) printf("\n%s", "Latitude: ");
            if(state == 4) printf("\n%s", "Longitude: ");
        }

        if(state == 0) {
            if((index % 2) == 0 && nmea[index+1] != ',') {
                printf("%c:", nmea[index]);
            } else printf("%c", nmea[index]);
        } else if(state == 2 || state == 4) {
            printf("%c", nmea[index]);
        } else if(state == 3 || state == 5) {
            printf(" %c", nmea[index]);
        }
        index++;
    }
}

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

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote