如何在C中获取文件大小?

时间:2012-04-17 07:02:00

标签: c file

  

可能重复:
  How do you determine the size of a file in C?

如何在C中获取文件大小?我打开了一个用C编写的应用程序。我想知道大小,因为我想将加载文件的内容放入一个字符串,我使用malloc()分配。只需编写malloc(10000 * sizeof(char)

5 个答案:

答案 0 :(得分:3)

您可以使用fseek和ftell函数:

FILE* f = fopen("try.txt","rb");
fseek(f, 0, SEEK_END);
printf("size of the file is %ld", ftell(f));

答案 1 :(得分:1)

对于文件大小,stat,lstat或fstat将是正确的选择。

请检查stat

答案 2 :(得分:0)

    int Get_Size( string path )
{

FILE *pFile = NULL;

// get the file stream

fopen_s( &pFile, path.c_str(), "rb" );


// set the file pointer to end of file

fseek( pFile, 0, SEEK_END );

// get the file size

int Size = ftell( pFile );

// return the file pointer to begin of file if you want to read it

rewind( pFile );

// close stream and release buffer

fclose( pFile );

return Size;
}

更多答案cplusplus.com

答案 3 :(得分:0)

您可以使用fseek将自己定位在文件的末尾,并使用ftell():

FILE *fd;
fd = fopen("filename.txt","rb");
fseek ( fd, 0 , SEEK_END );
int fileSize = ftell(fd);

filesize将包含以字节为单位的大小。

gekod

答案 4 :(得分:0)

我认为这有一个标准的C函数,但我找不到它。

如果您的文件大小有限,您可以使用izomorphius提出的解决方案。

如果您的文件大于2GB,则可以使用_filelengthi64函数(请参阅http://msdn.microsoft.com/en-us/library/dfbc2kec(v=vs.80).aspx)。不幸的是,这是一个Microsoft / Windows功能,所以它可能不适用于其他平台(尽管你可能会在其他平台上找到类似的功能)。

编辑:查看afge2对标准C函数的回答。不幸的是,我认为这仍然限制在2GB。