#include <stdio.h> #include <string.h> #include <stdint.h> // modified split string limited to 'count' void split_string(const char *str, char delimiter, char tokens[10][20], uint8_t count) { // Your logic here int i=0, j=0, k=0; while ((str[i] != delimiter) && (str[i] != '\0') && (k < count)) { j=0; while ((str[i+j] != delimiter) && (str[i+j] != '\0')) { tokens[k][j] = str[i+j]; j++; } tokens[k][j] = '\0'; k++; i = i + j +1; } } void parse_gprmc(char *nmea) { // Your logic here char tokens[7][20]; uint8_t count=7; split_string(nmea, ',', tokens, count); printf("Time: %C%C:%C%C:%C%C\n", tokens[1][0], tokens[1][1], tokens[1][2], tokens[1][3], tokens[1][4], tokens[1][5]); printf("Latitude: %s %s\n", tokens[3], tokens[4]); printf("Longitude: %s %s\n", tokens[5], tokens[6]); return; } int main() { char nmea[100]; fgets(nmea, sizeof(nmea), stdin); parse_gprmc(nmea); return 0; }
Use a slightly modified function written in an earlier exercise to extract tokens from string
modify the function to limit extraction to seven fields
then extract the tokens
and print time, latitude and longitude as extracted
Test Cases
Test Results
Input
$GPRMC,123519,A,4807.038,N,01131.000,E
Expected Output
Time: 12:35:19 Latitude: 4807.038 N Longitude: 01131.000 E