chsize ------------------ 改變文件大小, 預分配
chsize改變文件尺寸。
int chsize(int handle,long size);
例程 需要的頭文件 可選的頭文件 兼容性
chsize <io.h> <errno.h> Win NT,Win 95
對于另外兼容性的信息,參見引言中的兼容性
庫
LIBC.LIB 單線程靜態庫,零售版本
LIBCMT.LIB 多線程靜態庫,零售版本
MSVCRT.LIB MSVCRT.DLL的輸入庫,零售版本
返回值
如果文件尺寸成功改變chsize返回值0;返回值-1指出一個錯誤,如果指定的文件鎖定不能訪問,errno設置為EACCES,如果指定的文件是只讀的或者該句柄無效,則errno設置為EBADF;如果該設備上沒有剩余空間,則errno設置為ENOSPC。
參數
handle指向打開文件的句柄。
Size
文件的新尺寸,以字節為單位。
說明
chsize函數以size指定的長度擴充或截除與handle關聯的文件,該文件必須以允許寫模式打開,如果該文件被擴充,要在末尾添加空格字符('\0')。如果文件被截除,從縮短的文件的末尾到該文件的最初長度之間的所有數據被丟失。
例子
/* CHSIZE.C: This program uses filelength to report the size
* of a file before and after modifying it with chsize.
*/
#includ <io.h>
#includ <fcntl.h>
#includ <sys/types.h>
#includ <sys/stat.h>
#includ <stdio.h>
void main( void )
{
int fh, result;
unsigned int nbytes = BUFSIZ;
/* Open a file */
if( (fh = open( "data", ORDWR | OCREAT, SIREAD
| SIWRITE ))!= -1 )
{
printf( "File length before: %ld\n", filelength( fh ) );
if( ( result = chsize( fh, 329678 ) ) == 0 )
printf( "Size successfully changed\n" );
else
printf( "Problem in changing the size\n" );
printf( "File length after: %ld\n", filelength( fh ) );
close( fh );
}
}
輸出結果
File length before: 0
Size successfully changed
File length after:329678
參見
close,creat,open