Если вы открываете с w+
, чтобы сначала прочитать содержимое, это не сработает. С C11
:
w+
: усечь до нулевой длины или создать текстовый файл для обновления.
Вероятно, происходит то, что вы читаете данные из пустого файла, но не проверяете, правильно ли он работает. Это объяснило бы странный «контент», который вы видите для )PHI N
.
. Одним из решений является открытие файла с помощью r
, открытие другого файла с помощью w
и передача содержимого с шифрованием их как часть этого процесса. Затем закройте оба, удалите оригинал и переименуйте новый в оригинальное имя. Это позволит вам обрабатывать файлы произвольного размера, поскольку вы обрабатываете их поочередно.
Если вы не хотите использовать временный файл и уверены, что можете хранить весь контент в памяти, вы можете открыть его r+
, получить содержимое, открыть его в новом режиме, например:
FILE *readFh = fopen( "myfile.txt", "r+");
// Read in content, massage as needed.
FILE *writeFh = frepoen( NULL, "w+", readFh);
// Provided that worked, you should now have an empty file to write to.
// Write back your massaged data.