交错两个char数组的最佳方法

时间:2015-09-27 23:19:09

标签: pointers

我正在寻找使用用户输入的函数交错两个char数组的最佳方法。我正在学习C ++,这是一个家庭作业,所以我不能使用任何任何太高级的任务我只是好奇我是否正在朝着正确的方向发展。

我在考虑使用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]);

    }


}

这是错误的方法,如果是这样,那么正确的方向是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

以下是需要考虑的事项:

字符串长度可能不同。您需要决定如何处理较长字符串中的任何剩余字符。

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

char * strinterleave(const char * a,const char b){//&lt; - 使这个只是字符,而不是字符) char完成; done = * a + * b; &lt; - 添加不会交错的字符。我猜你的教练想要一个用字符交错创建的新字符串。

例如,如果你有: storage1 =&#34; 123456&#34; storage2 =&#34; abc&#34; 教练可能想要: finalString =&#34; 1a2b3c456&#34; }