Parse GPS String for Time and Coordinates

Code

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

void parse_gprmc(char *nmea) {
    // Your logic here
    char time[9]={0};
    char la[9]={0};
    char longi[10]={0};
    
    int j=0;
    printf("Time: ");
    for (int i=7;i<13;i++){
        
        time[j++]=nmea[i];
        printf("%c",time[j-1]);
        if (i==8||i==10){
            time[j++]=':';
        printf("%c",time[j-1]);
        }


    }
    printf("\n");
    //int j=0;
    printf("Latitude: ");
    for (int i=16;i<24;i++){
        
        la[j++]=nmea[i];
        printf("%c",la[j-1]);
       
    }
     printf(" N\n");
     j=0;
      printf("Longitude: ");
    for (int i=27;i<36;i++){
        
        longi[j++]=nmea[i];
        printf("%c",longi[j-1]);
       
    }
     printf(" %c\n",nmea[37]);
    
}

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