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