d3coy_00
@d3coy_00

Редактирование файла C++?

Привет, считал текст в буффер, как через цикл for и if внутри можно заменить строку в этом буффере и записать буффер в файл?

int main(int argc, char* argv[])
{
    char* sPath_in = "test.txt";

    FILE *f = fopen(sPath_in, "rb");
    fseek(f, 0, SEEK_END);
    long FileLength = ftell(f);
    fseek(f, 0, SEEK_SET);
    
    
    char *string = (char *)malloc(FileLength + 1);
    fread(string, FileLength, 1, f);
    cout << string << endl;
    fclose(f);
    

    //system("pause");
    return 0;
}
  • Вопрос задан
  • 700 просмотров
Пригласить эксперта
Ответы на вопрос 2
@User700
В конец должно быть требуется записать 0. Malloc не обнуляет выделенную память?
Найти подстроку strstr. Если найдено, копировать strcpy в выходной буфер или сразу в файл начало, затем замену и т.д. Затем копировать оставшийся конец. При работе с буфером следует предусмотреть realloc при переподнении. Если задача ограничена одним вхождением, одной заменой первого вхождения, можно изначально выделить буфер размером filesize + newsubstrlen - oldsubstrlen, перепестить (memmov или strmov, если последнее есть) конец строки и копировать memcpy строку в середину.
А почему вывод не на си?
Ответ написан
У вас буфер - это массив символов. Вы можете преобразовать этот массив в другой массив нужным вам способом.
Но если вы используете C++, а не С, то для работы с файлами используйте https://en.cppreference.com/w/cpp/io/basic_ifstream.
Разбивайте текст на слова и храните их в контейнерах vector или list.
Для манипулаций с текстом (вставка, удаление) используйте соответствующие методы контейнеров vector или list.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы