c - _filelength和chsize的问题

  显示原文与译文双语对照的内容
0 0

我有一个 exmpl.cpp 文件,其中包含下一个代码( 。来自这里的it`s来自 ):

#include <sys/io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h> 
#include <stdio.h>
void main( void )
{
 int fh, result;
 unsigned int nbytes = BUFSIZ;
/* Open a file */
 if( (fh = open("data", O_RDWR | O_CREAT, S_IREAD
 | S_IWRITE ))!= -1 )
 {
 printf("File length before: %ldn", filelength( fh ) );
 if( ( result = chsize( fh, 329678 ) ) == 0 )
 printf("Size successfully changedn" );
 else
 printf("Problem in changing the sizen" );
 printf("File length after: %ldn", _filelength( fh ) );
 close( fh );
 }
}

尝试编译它 g++ exmpl.cpp -o exmpl 然后拿着这个

在这里作用域中,exmpl 。cpp: 18: 错误:'_filelength'未声明为 exmpl: 19:: 43: 错误:'chsize'不能在这里范围内声明

是否有其它类似于这些函数的函数?

非常感谢

时间:原作者:3个回答

0 0

问题是 _filelength 只是一个窗口函数。

在 linux/mac中,你可以使用 stat 来解决该任务:

#include <sys/stat.h>
long file_length(char *f)
{
 struct stat st;
 stat(f, &st);
 return st.st_size;
}

在更改文件大小时,函数 chsize 也不是一个 Linux,但是可以以使用 ftruncate,来完成任务。

原作者:
...