我在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:对不起,如果这是一个愚蠢的错误,但我之前没有以这种方式处理过字符。谢谢。
答案 0 :(得分:1)
我不确定我是否正确理解了这个问题。看起来你正试图将句子分成单词数组。
有点奇怪你没有使用c ++提供的字符串函数,但是假设你有理由这样做。
如果你想分开句子,你应该这样做:
免责声明:该解决方案适用于短于30个符号的单词,句子中少于30个单词,否则会导致内存损坏......
void backword(char* input, char output[][30])
{
int index_c = 0;
int c = 0;
for (int i = 0; strlen(input) > i; i++)
{
if (input[i] == ' ')
{
c++;
index_c = 0;
}
else
output[c][index_c++] = input[i];
}
cout << output[1]; //debug
}
int main()
{
char output[30][30];
memset(output, 0, sizeof(output));
backword("dfs sdfsdfsd dsffsdf", output);
cout << output[1]; //dubug
return 0;
}
但我认为你最好使用字符串......