[ create a new paste ] login | about

Link: http://codepad.org/5rWaj2iA    [ raw code | output | fork ]

C++, pasted on Dec 6:
char str1[] = "$GPRMC,044159.000,A,3903.1262,N,07729.0495,W,0.00,40.30,061212,,,A*4D";
char str2[] = "$GPGGA,044200.000,3903.1262,N,07729.0497,W,1,08,1.0,83.7,M,-33.4,M,,0000*5F";
char str3[] = "$GPGSA,A,3,30,31,32,16,20,23,29,14,,,,,2.1,1.0,1.8*33";

int argpos(const char *str, int idx = 0, char sep = ',')
{
  for(int i = idx, j = strlen(str); i < j; i++)
    if (str[i] == sep && str[i+1] != sep)
      return i+1;

  return -1;
}

void print_indexes(const char *str)
{
  int idx = 0;
  while ((idx = argpos(str, idx)) != -1 )
    printf( "%d -> %c\n", idx, str[idx] );

  printf("\n");
}

int main()
{
  print_indexes( str1 );
  print_indexes( str2 );
  print_indexes( str3 );
}


Output:
7 -> 0
18 -> A
20 -> 3
30 -> N
32 -> 0
43 -> W
45 -> 0
50 -> 4
56 -> 0
65 -> A

7 -> 0
18 -> 3
28 -> N
30 -> 0
41 -> W
43 -> 1
45 -> 0
48 -> 1
52 -> 8
57 -> M
59 -> -
65 -> M
68 -> 0

7 -> A
9 -> 3
11 -> 3
14 -> 3
17 -> 3
20 -> 1
23 -> 2
26 -> 2
29 -> 2
32 -> 1
39 -> 2
43 -> 1
47 -> 1



Create a new paste based on this one


Comments: