1

如何使用 C 将字符串分成两半?我到处寻找答案,但大多数似乎都处理空格或其他字符的拆分(示例123)。我只想将一个字符串分成两半。有没有一种简单的方法可以做到这一点?

4

2 回答 2

3

不,没有简单的方法 - 它需要几个步骤:

  1. 计算字符串的长度
  2. 为两半分配内存
  3. 将内容复制到前半部分;添加空终止
  4. 将内容复制到后半部分;添加空终止符
  5. 使用你的字符串
  6. 释放第一个副本
  7. 释放第二个副本

您可以这样做:

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);

如果您拥有整个字符串,则不需要制作第二份副本,因为将指针指向字符串的中间就可以了。

于 2013-10-10T20:54:33.213 回答
1

如果您想就地进行,则不是。您必须为'\0'字节牺牲一个字符。

您需要考虑如何为拆分字符串的第二部分分配内存,并相应地进行编码。

于 2013-10-10T20:52:46.843 回答