102. Parse GPS String for Time and Coordinates

Back To All Submissions
Previous Submission
Next Submission

Code

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

void display_time(char *str){
    int i=0;
    printf("Time: ");
    while(*str){
        if(i%2==0 && i!=0)
            printf(":");
        printf("%c",*str);
        i++;
        str++;
    }
}
void parse_gprmc(char *nmea) {
    char temp[20]={0};
    char data[10][20]; 
    int i=0;
    char *temp_str = temp;
    while(*nmea){
        if(*nmea==','){
            memcpy(data[i],temp,sizeof(temp));
            memset(temp,0,sizeof(temp)) ;
            temp_str = temp;
            i++;
            nmea++;
            continue;
        }
         *(temp_str++) = *nmea;
         nmea++;
    }
    memcpy(data[i],temp,sizeof(temp));
    display_time(data[1]);
    printf("\nLatitude: %s %s\n",data[3],data[4]);
    printf("Longitude: %s %s\n",data[5],data[6]);
    

}

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

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote