⑴ 怎么在读入文件前获得文件大小【c语言版】
如果文件大小指的是你从C
程序中可以读进的字符数量,
要得到这个精确的数字可能困难或不可能。
Unix
系统函数stat()
会给出准确的答案。有些系统提供了类似Unix
的stat()函数,
但只返回一个近似值。你可以调用fseek()
搜索到文件尾,
再调用ftell(),
或者调用fstat(),
然而这些方法都有同样的问题:
fstat()
不可移植,
通常返回和stat()一样的值;
ftell()
并不保证可以返回字符计数,
除非是用于二进制文件,
但是,
严格来讲,
二进制文件并不一定支持fseek
搜索到SEEK
END。某些系统提供filesize()
或filelength()
的函数,
但是它们明显的不可移植。你是否确定你必须预先知道文件大小?作为一个C
程序最准确的方法就是打开文件并读入,
也许可以重新整理代码,
使其边读入边计算文件大小。
⑵ C语言中如何方便地得到文件长度
xdg1981的方法对大多数文件有效
alexzhu80s的方法调用的是unix的函数,不是标准库中的。不是每种操作系统都有stat函数。
没有100%正确的方法,xdg1981的方法成功率最高。
你最好根据你所用的操作系统来调用操作系统提供的接口。例如unix的stat及windows的GetFileSize
⑶ 用纯C语言取得文件长度
size是要读取的字节个数,一般用sizeof()来定义nitems是要读取的元素个数,也就是读取多少个sizeof()字节个数
⑷ c语言如何通过文件属性获取文件大小知道
c语言可以通过stat()函数获得文件属性,通过返回的文件属性,从中获取文件大小。
#include
<sys/stat.h>
可见以下结构体和函数
struct
stat
{
_dev_t
st_dev;
_ino_t
st_ino;
unsigned
short
st_mode;
short
st_nlink;
short
st_uid;
short
st_gid;
_dev_t
st_rdev;
_off_t
st_size;
//文件大小
time_t
st_atime;
time_t
st_mtime;
time_t
st_ctime;
};
stat(const
char
*,
struct
_stat
*);
//根据文件名得到文件属性
参考代码:
#include <sys/stat.h>
void main( )
{
struct stat buf ;
if ( stat( "test.txt", &buf ) < 0 )
{
perror( "stat" );
return ;
}
printf("file size:%d\n", buf.st_size );
}
⑸ C语言获取txt文件大小两种方法的差异
我测试了你的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidmain()
{
FILE*p=fopen("d:\jiuibf.txt","rt");
intlength=0;
for(;fgetc(p)!=EOF;length++);
fclose(p);
printf("第一种方式,文件长度=%d ",length);
p=fopen("d:\jiuibf.txt","rb");
fseek(p,0,2);
length=ftell(p);
fclose(p);
printf("第二种方式,文件长度=%d ",length);
}
文本文件的内容是:
FILE *p=("jiuibf.txt","rt");
int length;
for(;fgetc(p)!=EOF;length);
FILE *p=(jiuibf.txt","rb");
int length;
fseek(p,0,2);
length=ftell(p);
程序的输出是:
FILE*fp;
fp=fopen("localfile","rb");//localfile文件名
fseek(fp,0,SEEK_SET);
fseek(fp,0,SEEK_END);
longlongBytes=ftell(fp);//longBytes就是文件的长度
⑹ c语言如何通过文件属性获取文件大小
在"stdio.h"中有如下定义
struct_iobuf{
char*_ptr;//文件输入的下一个位置
int_cnt;//当前缓冲区的相对位置
char*_base;//指基础位置(即是文件的其始位置)
int_flag;//文件标志
int_file;//文件的有效性验证
int_charbuf;//检查缓冲区状况,如果无缓冲区则不读取
int_bufsiz;//文件的大小
char*_tmpfname;//临时文件名
};
typedefstruct_iobufFILE;
⑺ c获得文件大小
先用CreateFile打开一个文件得到文件句柄hfile,再调用GetFileSize(hfile)就ok
⑻ c语言如何计算文件大小
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE*fp;
int a;
if((fp=fopen("1.txt","rb"))==NULL)
{
printf("此文件无法打开");
exit(0);
}
fseek(fp,0,2);
a=ftell(fp);
printf("%d\n",a);
fclose(fp);
}
望采纳!
⑼ C语言获取文件大小 int或long int都是32位,最大为40亿 在ntfs下文件超过4GB怎
用库函数fgetpos可以获得64位长度的值,举个例子:
FILE *fp;
fpos_t filelen; //fpos_t是个宏,就是long long ,64位整数
fp = fopen("xxxxx","r");
fseek(fp, 0, SEEK_END); //移动文件指针到末尾
fgetpos(fp, &filelen); //把偏移量写入filelen
⑽ c语言求文件长度,ftell得到文件长度为-1
C语言获取文件长度及全部内容,参考代码如下:
FILE*fp;
fp=fopen("localfile","rb");//localfile文件名
fseek(fp,0L,SEEK_END);/*定位到文件末尾*/
flen=ftell(fp);/*得到文件大小*/
p=(char*)malloc(flen+1);/*根据文件大小动态分配内存空间*/
if(p==NULL)
{
fclose(fp);
return0;
}
fseek(fp,0L,SEEK_SET);/*定位到文件开头*/
fread(p,flen,1,fp);/*一次性读取全部文件内容*/
p[flen]=0;/*字符串结束标志*/
all:strchange.o
gcc-ostrchange.o-cstrchange.c
strchange.o:strchange.c
gcc-ostrchangestrchange.o
clean:
rm-rfstrchange*.o