是什么导致这种细分错误?

时间:2013-10-27 19:51:06

标签: c++ segmentation-fault

    string replace_strings (FILE *in, FILE *out, char *what, char *repl)
{
    int x = strlen(what);
    int z = strlen(repl);
    string newWhat(what, x);
    string newRepl(repl, z);
    char c;
    char *str; //наш буффер
    int i = 0;
    size_t found;

这样做是一个糟糕的决定,我知道

    while(!feof(in))
    {
        while((c!='\0') && (i<=255))
        {
            str[i] = fscanf(in, "%c", c);
            i++;
        }
        string newStr (str, i);
        while(found != string::npos)
        {
            found = newStr.find(newWhat);
            newStr.replace(found, newWhat.length(), newRepl);
        }

        fprintf(out, "%s", newStr.c_str());

它返回分段错误,有什么问题?我该怎么办?帮帮我们

1 个答案:

答案 0 :(得分:2)

您必须为str分配内存。使用stringstream,忘掉笨拙的缓冲区。