递归中的运行时内存错误用c ++中的字符函数替换空格

时间:2014-10-25 02:37:08

标签: c++

我正在尝试使用静态变量构建一个递归函数,该函数将用asterik字符替换空格,但是soemthing是不对的。我收到错误Runtime error time: 0 memory: 3472 signal:11

代码

#include <iostream>
using namespace std;

string replace(string s) {
    static int n = 0;

    if (n == s.length()) return s; 
    if (s[n] == ' ') s[n] = '*';

    n++;
    replace(s);
}

int main() {
    string s= "ssdfa sadfs";
    cout<<replace(s);
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您只从递归的基本情况返回一个字符串,而不是所有其他情况。将最后一行更改为:

return replace(s);

答案 1 :(得分:1)

这可以像这样完成

string replace(string s)
{
    int len = s.length();
    for(int i = 0; i < len; i++)
    {
        if(s[i] == ' ')
            s[i] = '*';
    }
    return s;
}