Рассматривайте первые 2/3 строки как кольцевой буфер и вращайте символы в нем.
- Найти индекс последней черты
- Сохранить символ в индексе
- Переместить все предыдущие символы вниз на одну позицию
- Восстановить сохраненный символ в шаге 2 до начала строки.
- Повторяйте шаги с 2 по 4, пока первая черта не окажется в позиции указателя.
Конечно, это не самое эффективное решение, но оно работает.
Я бы опубликовал какой-то реальный код, но это звучит как домашнее задание.
Редактировать
#include <string.h>
void function( char * s )
{
int second_dash = ( strrchr(s, '-') - s );
do
{
char t = s[second_dash];
memmove( s + 1, s, second_dash);
s[0] = t;
}
while ( s[second_dash] != '-' );
}
Если в вашей строковой библиотеке нет strrchr () или memmove (), их можно легко заменить циклами.