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