我有一个char * string1 =“HELLOPEOPLE”,我有另一个char *部分=字符串+5。因此,部分指向“PEOPLE”记忆中的位置。我的问题是如何在不改变string1的情况下将部分变为“PEOPLEHELLO”。
我问这个是因为我正在研究Burrows Wheeler变换的循环排列。例如,从单词PLAY(示例单词)中获取这样的矩阵。
PLAY
YPLA
AYPL
LAYP
有没有办法在不改变PLAY的情况下获得YPLA,只需使用索引(对内存中的点的引用) ?
答案 0 :(得分:4)
你不能。
但是,您可以打印portion
和string1
printf("%s%5.5s\n", portion, string1);
在portion
string1
和portion
部分
int len = portion - string1;
printf("%s%*.*s\n", portion, len, len, string1);
答案 1 :(得分:0)
除非您创建新字符串并按所需顺序复制部分,否则不能这样做。
答案 2 :(得分:0)
您可以使用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 */