Objective c 如何在不实际更改的情况下重新排列char*(索引)的开头和结尾?

Objective c 如何在不实际更改的情况下重新排列char*(索引)的开头和结尾?,objective-c,c,char,permutation,Objective C,C,Char,Permutation,我有一个char*string1=“HELLOPEOPLE”,还有一个char*partition=string+5。所以这一部分指向“人”在记忆中的位置。我的问题是,如何在不更改string1的情况下让部分成为“PEOPLEHELLO” 我这样问是因为我在研究Burrows-Wheeler变换的循环置换。例如,从单词PLAY(例如word)中获得这样的矩阵 有没有什么方法可以在不改变播放顺序的情况下,仅仅使用索引(对内存中的点的引用)获得YPLA ?除非创建新字符串并按所需顺序在其中复制部分,

我有一个char*string1=“HELLOPEOPLE”,还有一个char*partition=string+5。所以这一部分指向“人”在记忆中的位置。我的问题是,如何在不更改string1的情况下让部分成为“PEOPLEHELLO”

我这样问是因为我在研究Burrows-Wheeler变换的循环置换。例如,从单词PLAY(例如word)中获得这样的矩阵

有没有什么方法可以在不改变播放顺序的情况下,仅仅使用索引(对内存中的点的引用)获得YPLA

除非创建新字符串并按所需顺序在其中复制部分,否则无法执行。

除非创建新字符串并按所需顺序在其中复制部分,否则无法执行。

无法执行

但是,您可以打印
部分
string1的前5个字符

printf("%s%5.5s\n", portion, string1);
或者在
部分
之前打印
部分
string1的部分

int len = portion - string1;
printf("%s%*.*s\n", portion, len, len, string1);
你不能

但是,您可以打印
部分
string1的前5个字符

printf("%s%5.5s\n", portion, string1);
或者在
部分
之前打印
部分
string1的部分

int len = portion - string1;
printf("%s%*.*s\n", portion, len, len, string1);

您可以使用C标准库中的
strncpy
strncat

 char *target = calloc(strlen(string1)+1, 1)
 strncpy(target, portion, 6);
 strncat(target, string1, 5);
 portion = target;    /* Sets portion to be HELLOPEOPLE */

您可以使用C标准库中的
strncpy
strncat

 char *target = calloc(strlen(string1)+1, 1)
 strncpy(target, portion, 6);
 strncat(target, string1, 5);
 portion = target;    /* Sets portion to be HELLOPEOPLE */

允许分配新字符串吗?允许分配新字符串吗?