-1

所以,当我想组合它们时,我使用getline(cin, str);then和之后的 for 语句得到句子( )我得到分段错误。完整代码:string text[str.length()];text[e] = text[e] + str[i];

#include <cstdlib>
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{
    string str;
    int i, e, space = 0;

    getline(cin, str);
    string text[str.length()];

    for(i=0; i<str.length(); i++) {
        if(str[i]==' ') {
            space++;
            e++;
        }
        else {
            text[e] = text[e] + str[i];
        }
    }

    return 0;
}
4

1 回答 1

5

e是未初始化的,它将保持一个随机值,可能超出text导致分段错误的范围。这不会将所有变量初始化为零:

int i, e, space = 0;

只有space初始化为零。改成:

int i = 0, e = 0, space = 0;

或者:

int i = 0;
int e = 0;
int space = 0;

据我所知,c++ 不支持变长数组。

于 2013-05-28T21:16:06.787 回答