[prg] замена строки в фале c++ .
ждравствуйте.
помогите, пожалуйста.
Программа должна заменить все вхождения строки в файле на другую строку
и вывести результат в другой файл.
При этом для чтения файла пользоваться стандартными средствами си
(fprintf, fscanf)
каждая строка должна быть преобразована к std::string.
для замены пользоваться методами std::string;
#include<string >
#include<cstring>
#include<stdio.h>
void replace_strings(char *what, char *repl, FILE *in, FILE *out)
{
char str_1 [256] ={0};
std::string what_ =what;
std::string repl_ =repl;
bool ok =false;
for (int i =0; str_1[i] !='\n'; i++)
/* понимаю, что здесь ошибка, но как правильно?*/
{
fscanf (in, "%c", &str_1[i]);
}
std::string str_2 =str_1;
if (str_2.compare(what_) ==0)
{
ok =true;
}
if (ok)
{
std::string str_3 =repl_;
swap(str_2, str_3);
char *p =new char [str_2.length() +1];
std::strcpy(p, str_2.c_str());
for (int i =0; i < str_2.length() +1; i++)
{
fprintf(out, "%c", p[i]);
}
fprintf (out, "\n");
delete(p);
}
else
{
char *p =new char [str_2.length() +1];
std::strcpy(p,str_2.c_str());
for (int i =0; i < str_2.length() +1; i++)
{
fprintf(out, "%c", p[i]);
}
fprintf (out, "\n");
delete(p);
}
fclose(in);
fclose(out);
}
Предполагается, что имя входного и выходного файла будут переданы main в
качестве аргументов командной строки.
Заранее спасибо за ответ.
Здравствуйте.
Вопрос пока снимается.
12.10.2013 0:31, дима пишет: