Функция как SetFileLength () в C Library для Linux - PullRequest
0 голосов
/ 11 декабря 2008

Есть ли в библиотеке C в Linux функция, которая может установить длину файла? Под Windows я знаю, что есть функция SetFileLength (). Если нет, как лучше всего укоротить файл, не удаляя и не перезаписывая его?

Ответы [ 2 ]

5 голосов
/ 11 декабря 2008

Вы можете использовать функцию усечения .

int truncate(const char *path, off_t length);

Со страницы руководства:

"Функции truncate () и ftruncate () приводят к усечению обычного файла с именем path или ссылкой на fd до размера байтов с точной длиной. Если файл ранее был больше этого размера, дополнительные данные теряются . Если файл ранее был короче, он расширяется, и расширенная часть читается как нулевые байты "

3 голосов
/ 11 декабря 2008
   #include <unistd.h>
   #include <sys/types.h>

   int truncate(const char *path, off_t length);
   int ftruncate(int fd, off_t length);

со страницы руководства:

Усечение () и ftruncate () функции вызывают обычный файл с именем по пути или по ссылке fd, чтобы быть усеченный до размера точно длина в байтах.

Если файл ранее был больше чем этот размер, дополнительные данные потерял. Если файл ранее был короче, он расширяется, а расширенная часть читается как нулевые байты ( '\ 0').

...