Format
#include <io.h> int _chsize(int handle, long size);
Language Level: Extension
_chsize lengthens or cuts off the file associated
with handle to the length specified by size.
You must open the file in a mode that permits writing. _chsize
adds null characters (\0) when it lengthens the file. When
_chsize cuts off the file, it erases all data from the end of the
shortened file to the end of the original file.
Return Value
_chsize returns the value 0 if it
successfully changes the file size. A return value of -1 shows an
error; _chsize sets errno to one of the following values:
| Value | Meaning |
| EACCESS | The specified file is locked against access. |
| EBADF | The file handle is not valid, or the file is not open for writing. |
| ENOSPC | There is no space left on the device. |
| EOS2ERR | The call to the operating system was not successful. |
Example
This example opens a file named
sample.dat and returns the current length of that file. It then
alters the size of sample.dat and returns the new length of that
file.
#include <io.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h>
int main(void)
{
long length;
int fh;
printf("\nCreating sample.dat.\n");
system("echo Sample Program > sample.dat");
if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
printf("Unable to open sample.dat.\n");
return EXIT_FAILURE;
}
if (-1 == (length = _filelength(fh))) {
printf("Unable to determine length of sample.dat.\n");
return EXIT_FAILURE;
}
printf("Current length of sample.dat is %d.\n", length);
printf("Changing the length of sample.dat to 20.\n");
if (-1 == (_chsize(fh, 20))) {
perror("_chsize failed");
return EXIT_FAILURE;
}
if (-1 == (length = _filelength(fh))) {
printf("Unable to determine length of sample.dat.\n");
return EXIT_FAILURE;
}
printf("New length of sample.dat is %d.\n", length);
close(fh);
return 0;
/**********************************************************
The output should be similar to:
Creating sample.dat.
Current length of sample.dat is 17.
Changing the length of sample.dat to 20.
New length of sample.dat is 20.
**********************************************************/
}
![]()
_filelength -- Determine
File Length
lseek -- Move
File Pointer
<io.h>