




Вы можете использовать функция усечения.
int truncate(const char *path, off_t length);
На странице руководства:
«Функции truncate () и ftruncate () приводят к усечению обычного файла, названного по пути или указанного в fd, до размера точно в байтах. Если файл ранее был больше этого размера, дополнительные данные теряются. файл раньше был короче, он расширен, и расширенная часть читается как нулевые байты "
Обратите внимание, что усечение не указано только для систем POSIX. для этого требуются системы, совместимые с XSI. с другой стороны, в нем говорится, что большинство UNIX совместимы с xsi. так что вы должны быть в порядке с усечением, я думаю.
#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
На его странице руководства:
The truncate() and ftruncate() functions cause the regular file named by path or referenced by fd to be truncated to a size of precisely length bytes.
If the file previously was larger than this size, the extra data is lost. If the file previously was shorter, it is extended, and the extended part reads as null bytes ('\0').
codymanix, он из POSIX, поэтому предполагается, что он будет доступен в операционных системах POSIX.