Я создал программу на C ++, которая запрашивает у пользователя имя файла и запрашиваемый размер файла. Программа проверяет, больше ли запрашиваемый размер файла, чем фактический размер файла, и затем добавляет нулевые символы (символы с кодом 0
) в конец файла, пока не будет достигнут запрашиваемый размер файла.
Я сделал это так (с помощью fstream):
for (blah blah) {
file << '\0'; // ('file' is an fstream object)
}
и это сработало так, как я хотел. Я знаю, что это плохой код, поскольку он может мучить жесткий диск, посылая ему много вызовов (и, кстати, он медленный). Это было только из соображений тестирования. Затем из-за этой проблемы я решил создать переменную, хранящую символы NUL, и сохранить всю переменную в файл сразу (без сохранения каждого символа отдельно).
Затем возникла проблема ... из-за символа NUL (также известного как нулевой терминатор), оканчивающего строку, я никак не мог сохранить эти нули.
Я пробовал массив символов, строку и даже строковый поток, но ни один не работал (в строковом потоке было что-то интересное, когда я использовал его, содержимое файла выглядело так: 0x47c274
). Во всяком случае, это не сработало, как я ожидал.
Есть ли эффективный способ хранения массива нулевых символов?