#c #file-handling #solid-state-drive
Вопрос:
Я запустил его в коде VS, и меня предупредили только после того, как на моем твердотельном накопителе осталось 58 МБ свободного места. Я не знаю, почему моя Windows не предупредила меня или не остановила процесс, потребовалось около нескольких минут, чтобы заполнить мой SSD, который занимает около 130 ГБ места. `
#include lt;iostreamgt; #include lt;fstreamgt; #include lt;stringgt; using namespace std; main() { fstream fr,fw; string s; fr.open("somefile.txt", ios::in); fw.open("somefile.txt", ios::app); fwlt;lt;"Some Textn"; while( getline(fr,s) ){ fwlt;lt;slt;lt;"copied"lt;lt;endl; } fr.close(); fw.close(); }
`
Мое хранилище заполнилось за очень короткий промежуток времени
Комментарии:
1. Вы читаете и записываете в один и тот же файл. Таким образом, поток данных никогда не заканчивается, и он записывается бесконечно.
2. У вас есть бесконечный цикл (потому что всегда есть новая строка текста, потому что вы пишете новую строку текста на каждой итерации), который записывается в файл — поэтому, конечно, в какой-то момент он исчерпает доступное дисковое пространство.
3. Я проверил в своем местном и, похоже, проблема, о которой вы упомянули, существует только в том случае, если
somefile.txt
она уже существует и имеет некоторые данные. Можете ли вы подтвердить и обновить свой вопрос, чтобы другие могли воспроизвести его? Чтобы не столкнуться с такой проблемой, как вы,я просто добавил счетчик,while( getline(fr,s) )
например, int counter = 1000; while( —counter amp;amp; getline(fr, s) ).