2015-09-27 36 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