Как я могу изменить начало и конец символа * (по индексу), фактически не меняя его? - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть символ * string1 = "HELLOPEOPLE", и у меня есть еще один символ * часть = строка + 5. Таким образом, часть указывает на место в памяти «ЛЮДИ». У меня вопрос, как я могу получить часть, чтобы быть "PEOPLEHELLO" без изменения строки1.

Я спрашиваю об этом, потому что я работаю над циклическими перестановками для преобразования Берроуза Уилера. Например, чтобы получить подобную матрицу из слова PLAY (Пример слова).

PLAY
YPLA
AYPL
LAYP

Есть ли способ получить YPLA без изменения PLAY, просто используя индексы (ссылки на точки в памяти)

Ответы [ 3 ]

4 голосов
/ 14 декабря 2011

Вы не можете.

Однако вы можете напечатать portion и первые 5 символов string1

printf("%s%5.5s\n", portion, string1);

Или напечатать portion и часть string1 до portion

int len = portion - string1;
printf("%s%*.*s\n", portion, len, len, string1);
0 голосов
/ 14 декабря 2011

Вы можете использовать strncpy и strncat из стандартной библиотеки C:

 char *target = calloc(strlen(string1)+1, 1)
 strncpy(target, portion, 6);
 strncat(target, string1, 5);
 portion = target;    /* Sets portion to be HELLOPEOPLE */
0 голосов
/ 14 декабря 2011

Нельзя, если вы не создадите новую строку и не скопируете в нее части в нужном порядке.

...