У меня вопрос о использовании fseek() в C. Я знаю, что он может установить позицию смещения дескриптора файла, созданного fopen(). Но может ли он также установить позицию смещения вновь созданного файла? Более конкретно, могу ли я:fseek недавно созданный файл
FILE * pFile;
pFile = fopen ("myfile.txt" , "wb"); //myfile.txt doesn't exit before
fseek (pFile , 1024*1024*1024 , SEEK_SET);
fclose(pFile);
Будет ли он создавать файл размером 1 ГБ и без контента? Или я должен хотя бы написать что-то, чтобы создать этот файл размером 1 ГБ?
Я уверен, что будет контент, это будет просто случайный контент, как в том, что когда-либо происходит в выделенной области диска. Возможно, вы захотите инициализировать область данных некоторым известным значением. –
Однако http://pubs.opengroup.org/onlinepubs/009695399/functions/fseek.html говорит, что «Функция fseek() должна позволять устанавливать индикатор позиции файла за пределы существующих данных в файле. данные позже записываются в этот момент, последующие считывания данных в пробеле должны возвращать байты со значением 0, пока данные не будут фактически записаны в промежуток ». однако что произойдет, если вы закроете файл, а затем снова откроете его? Будет ли это еще помнить? –
Поиск будет просто перемещать позицию, но не будет расширять файл, если вы не напишете что-то в этой позиции. –