2015-09-27 39 views
0

我正在寻找使用用户输入的函数交织两个char数组的最佳方法。我正在学习C++,这是一项家庭作业,所以我不能使用任何先行任务。如果我正朝着正确的方向行事,我只是好奇而已。交错两个char数组的最佳方法

我在想,使用for循环遍历两个数组中的每个索引,然后使用该函数添加两个字符并输出它们。我也必须使用指针来完成这项任务。

#include <iostream>; 

using namespace std; 

char* strinterleave(const char *a, const char *b) { 
char done; 
done = *a + *b; 
} 

int main() { 

char interleave[]=""; 
char storage1[] = ""; 
char storage2[] = ""; 
int lena; 
int lenb; 


char *a_ptr = storage1; 
char *b_ptr = storage2; 



    cin.getline(storage1, numeric_limits<streamsize>::max(), ' '); 
    cin.getline(storage2, numeric_limits<streamsize>::max()); 
    lena = strlen(a_ptr); 
    lenb = strlen(b_ptr); 
    int finallen = lena + lenb; 
    for (int j = 0; j <= finallen; ++j) { 
     strinterleave(a_ptr[j], b_ptr[j]); 

    } 


} 

这是错误的方式去做这件事,如果是的话,那么什么是正确的方向去?

谢谢

回答

0

这里有一些事情要考虑:

字符串长度可能是不一样的。您需要决定对较长字符串中的任何剩余字符做什么。

检查你的代码... int finallen = lena + lenb; for(int j = 0; j < = finallen; ++ j){< ---记住你一次处理两个字符,所以你可能想要像lena或lenb的最大值。 strinterleave(a_ptr [j],b_ptr [j]); // < ---这是传递字符,而不是指向字符的指针,所以它与函数声明不匹配。

的char * strinterleave(为const char *一,为const char B){// < - 让这只是个字符,不烧焦) 字符进行; done = * a + * b; < - 添加字符不会交错。我猜你的教练想要一个新的字符串与字符交错创建。

例如,如果您有: 存放1 = “123456” 存储2 = “ABC” 指导员可能想: finalString = “1a2b3c456” }

+0

谢谢Olan的帮助。通过两个字符串,最好是通过两个数组运行两个for循环吗? – Motorscooter

+0

两个循环将起作用。一个循环复制第一个字符串。从第一个字符串复制字符时,可以为第二个字符串留出空间。棘手的部分可能仍然是处理不同长度的字符串。我认为你目前的单循环方法也不错。 – Olan

+0

再次非常感谢您的帮助和指导,我没有任何人可以真正反弹出主意。我想我只是想再问一遍,这是否是现在正确的方向?现在我的做法是做一个while循环,当我们到达最小数组的空终止符时停止,然后使用for循环,我将以某种方式将大数组中的额外字符添加到它。 – Motorscooter