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 );
}