Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
6年前关闭。
如何使用C将字符串分成两半?我到处寻找答案,但大多数似乎都涉及到空格或其他字符的拆分(例如on-topic,1,2)。我只想把绳子分成两半。有什么简单的方法可以做到这一点吗?
如果您拥有整个字符串,则不需要制作第二个副本,因为将指针放在字符串中间就可以了。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
6年前关闭。
如何使用C将字符串分成两半?我到处寻找答案,但大多数似乎都涉及到空格或其他字符的拆分(例如on-topic,1,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);
如果您拥有整个字符串,则不需要制作第二个副本,因为将指针放在字符串中间就可以了。
09-29 20:41