2011-04-08 58 views
0

如何分割一个数组字符到另外两个数组char?例如: :拆分数组字符

char array1 [9] = {10011010}; char array2 [5],array3 [5];

现在我想把1001放在array2和1010 array3中 我该如何请求?

回答

2

很多方法。想到的两个是memcpystd::copy

#include <cstring> 
memcpy(array2, array1, 4); 
memcpy(array3, array1+4, 4); 

#include <algorithm> 
std::copy(array1, array1+4, array2); 
stdd::copy(array1+4, array1+8, array3); 

似乎从你保持比你需要多一个字节的数组的大小。也许这些是字符串,除了是简单的数组?如果是这样,请记住在数组末端放一个空字节使用它们之前:

array2[4] = 0; 
array3[4] = 0; 
0

那么,你的第一个数组是9个字符。如果你把它分成两部分,一部分必须是5,一部分必须是4个字符。这应该是诀窍:

char array1[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'}; // not a null-terminated string 
int len = sizeof(array1)/sizeof(array1[0]); 
int len1 = len/2; 
int len2 = len - len1; 
char* array2 = new char[len1]; 
char* array3 = new char[len2]; 

memcpy(array2, array1, len1); 
memcpy(array3, array1 + len1, len2); 
+0

如果第二次新的抛出有内存泄漏。当然是 – 2011-04-08 13:42:18

+0

,但这不是重点。我敢肯定你可以在网上发布的大多数样本中发现这样的问题。你可以使用std :: vector作为实例,而不关心分配内存,并且你不会在那里遇到这样的问题。我的样本是对一种可能解决方案的快速参考。 – 2011-04-08 13:59:47