我有麻烦处理问题

时间:2017-03-07 09:37:08

标签: c++ char

我在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:对不起,如果这是一个愚蠢的错误,但我之前没有以这种方式处理过字符。

谢谢。

1 个答案:

答案 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;
}

但我认为你最好使用字符串......