как разбить строку и сохранить ее в другой переменной - PullRequest
0 голосов
/ 10 июня 2011

Мне нужна помощь, потому что я застрял здесь.Любая идея для строгости будет очень полезна.

У меня есть строка с надписью "собака-кошка-животное", и я хочу строку, как "собака-кошка-животное"

Я слегка поражен.Я знаю, в C я могу использовать strtok, но это сломает строку.Я задаюсь вопросом, как сохранить эту строку в вышеуказанном формате.

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Рассматривайте первые 2/3 строки как кольцевой буфер и вращайте символы в нем.

  1. Найти индекс последней черты
  2. Сохранить символ в индексе
  3. Переместить все предыдущие символы вниз на одну позицию
  4. Восстановить сохраненный символ в шаге 2 до начала строки.
  5. Повторяйте шаги с 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 (), их можно легко заменить циклами.

0 голосов
/ 10 июня 2011

Вы можете использовать sscanf и затем восстановить строку из 3 отсканированных подстрок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...