使用C将字符串拆分为一半

时间:2013-10-10 20:50:50

标签: c string split

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

2 个答案:

答案 0 :(得分:2)

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

  1. 计算字符串的长度
  2. 为两半分配内存
  3. 将内容复制到上半部分;添加空终止
  4. 将内容复制到下半场;添加空终结符
  5. 使用字符串
  6. 免费提供第一份副本
  7. 释放第二份副本
  8. 以下是如何做到这一点:

    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'字节牺牲一个字符。

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