У меня есть программа, написанная на C ++, которая принимает текст от пользователя и сохраняет его в текстовый файл с помощью файловых дескрипторов. Вот фрагменты программы:
Программа работает отлично. Единственная проблема в том, что он не добавляет текст в текстовый файл. Скорее, он «удаляет» весь существующий текст и сохраняет только новый текст.
То есть текст, сохраненный в предыдущем сеансе программы, отбрасывается, а новый текст сохраняется. Как я могу решить эту проблему, пожалуйста?
Включить O_APPEND
флаг при открытии файла. Смотрите справочную страницу для _open()
.
Поскольку это C ++, рассмотрите возможность использования ofstream
вместо. Они являются типобезопасными и устраняют необходимость указывать длину аргументов, записываемых в файл:
std::ofstream out(full_path, std::ios_base::app);
if (out.is_open())
{
out << "----Session----\n\n"<< "Date/Time: " << datetime << "\n\n"<< "Text: " << text << "\n\n\n\n";
}
Других решений пока нет …