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());
返回段錯誤,有什麼不對?我該怎麼辦?幫助我們
什麼是調試器告訴你有關錯誤的來源?此外,你**總是**需要檢查輸入是否成功** **之後嘗試讀取的東西。 –
你不初始化'c',並且你不初始化'str',所以會發生任何事情。 –
如果您沒有將C I/O與C++功能混合,生活會更容易。例如,'std :: fstream'與'std :: string'相比'fprintf'更好。 –