我在C++中工作,所以我開始製作一個系統,在一個二維字符數組中打開一個句子。在我努力解決問題之後,我得到了它的工作,但沒有按照它的設想。我遇到了字符處理的問題
#include <iostream>
#include <cstring>
using namespace std;
void backword(char* input, char* output[])
{
for(int i = 0, c = 0; strlen(input)>i; i++)
{
if(input[i] == ' ')
{
c++;
i++;
}
output[c] += input[i];
}
cout << output[1]; //debug
}
int main()
{
char** output = new char*[30];
backword("dfs sdfsdfsd dsffsdf", output);
cout << output[1]; //dubug
return 0;
}
所以什麼問題?:它不顯示任何東西,我的調試之後,似乎我的數組沒有改變
更多細節:此代碼我在Visual Studio中嘗試過,沒有工作,試圖Code :: Blocks,結果相同。最初是爲了返回一個指針char **,但是我從這個方法開始,並沒有發生任何編譯錯誤。
P.S:對不起,如果這是一個愚蠢的錯誤,但我沒有以這種方式使用字符。
謝謝。
你永遠不分配在'output'舉行的指針的內存。 –
由於這是C++,你不應該使用原始字符指針,但你應該用'的std :: string'工作。你的方式更像C方式。你忘了提及你的程序應該做什麼。 –
我想你在cout << * output [1]行缺少解引用。 // debug',然後你傳遞臨時對象到函數,我認爲它在函數完成後被銷燬,並且我不確定是否有內存分配...... –