strcat() needs a null-terminated string as it's input. so strcat(token, ¤t) will start reading at the address of current and keep going until it finds a null. Just by chance, what you had in memory after current was "\001", so each time you did strcat it copied all that into token.
You should do char current[] = "\0\0" and then assign it with current[0] = chs[++pos]. That way current will always have that null termination.