0

LinuxのCライブラリにファイルの長さを設定できる関数はありますか?Windowsでは、SetFileLength()関数があることを知っています。ない場合、ファイルを削除して書き直さずにファイルを短縮する最良の方法は何ですか?

4

2 に答える 2

5

切り捨て関数を使用できます。

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

マニュアルページから:

「truncate()およびftruncate()関数を使用すると、pathで指定された、またはfdで参照された通常のファイルが正確な長さのバイトのサイズに切り捨てられます。ファイルが以前にこのサイズよりも大きかった場合、余分なデータは失われます。以前のファイルは短く、拡張されており、拡張された部分はnullバイトとして読み取られます。」

于 2008-12-10T23:33:03.003 に答える
3
   #include <unistd.h>
   #include <sys/types.h>

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

そのマンページから:

truncate()およびftruncate()関数を使用すると、pathで指定された、またはfdで参照された通常のファイルが、正確な長さのバイトのサイズに切り捨てられます。

以前にファイルがこのサイズより大きかった場合、余分なデータは失われます。以前にファイルが短かった場合、そのファイルは拡張され、拡張された部分はnullバイト('\ 0')として読み取られます。

于 2008-12-10T23:33:17.853 に答える