gpt4 book ai didi

c - _filelength 和 chsize 的问题

转载 作者:行者123 更新时间:2023-12-02 07:33:51 25 4
gpt4 key购买 nike

我有一个文件 exmpl.cpp,其中包含下一个代码(来自 here ):

#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: %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 );
}
}

尝试使用g++ exmpl.cpp -o exmpl编译它并得到:

exmpl.cpp:18:60: error: ‘_filelength’ was not declared in this scopeexmpl.cpp:19:43: error: ‘chsize’ was not declared in this scope

是否有与这些功能类似的替代功能?

非常感谢。

最佳答案

问题在于 _filelength 是仅限 Windows 的函数。

在 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完成这项工作。

关于c - _filelength 和 chsize 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26424852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com