答案 0 :(得分:2)
不,没有简单的方法 - 它需要几个步骤:
以下是如何做到这一点:
char *str = "quickbrownfox";
int len = strlen(str);
int len1 = len/2;
int len2 = len - len1; // Compensate for possible odd length
char *s1 = malloc(len1+1); // one for the null terminator
memcpy(s1, str, len1);
s1[len1] = '\0';
char *s2 = malloc(len2+1); // one for the null terminator
memcpy(s2, str+len1, len2);
s2[len2] = '\0';
...
free(s1);
free(s2);
如果你拥有整个字符串,则不需要再制作第二个副本,因为在指向字符串中间的指针才能正常工作。
答案 1 :(得分:0)
如果您想在原地进行,则不会。您必须为'\0'
字节牺牲一个字符。
您需要考虑如何为拆分字符串的第二部分分配内存,并相应地进行编码。