c - 使用C将字符串分成两半

标签 c string split

<分区>

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

最佳答案

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

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

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

关于c - 使用C将字符串分成两半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305980/

相关文章:

c - 移动数组中的数据会覆盖数据吗?

c - KDMF 驱动程序部署到 Windows 7 虚拟机

javascript - jQuery:如果字符串与这些 href 之一匹配

java - 缓冲阅读器读取特定行和文本

arrays - 如何将只有十个字符的字符串(例如 ."12345*45688")拆分为数组

c - 编译器如何在中等内存模型中解析地址?

c++ - fpga:选择c++来编程fpga

c++ - 确保文件扩展名与 C++ 中的文件类型匹配

ruby - 为什么 String#split ("\n") 和 Array#join (' ' ) 比 String#gsub(/\n/, ' ' ) 更快?

php - 如何逐字符拆分字符串,注意特殊字符