Чтобы работало с приведённой строкой, формат должен быть таким:
sscanf(mycharp, "%[^'*']*,%[','^]", o, s);
Исходный формат не работает, потому что обработка %[^'*']
остановится на входном символе *, и так там и останется, потому что последующая часть форматной строки не поглощает этот символ.
Кроме того, вы, мне кажется, понаставили лишних апострофов внутри квадратных скобок. В форматной строке они интерпретируются буквально, т.е. формат "%[^'*']" означает "символы, кроме апострофа, звёздочки или апострофа". Вот так тоже должно работать:
sscanf(mycharp, "%[^*]*,%[,^]", o, s);