c語言文件的大小
❶ c語言 計算文件大小fgetpos,數據出現負數且不正確
在目前的C/C++標准中,ftell為long型的,也就是32位的,它的范圍就是-2,147,483,648到2,147,483,647
,你要對超過2G的文件操作,必須用類似gcc中
Function:
off64_t
ftello64
(FILE
*stream)
這樣的函數
或可用系統的SDK
DWORD
GetFileSize(
HANDLE
hFile,
//
handle
of
file
to
get
size
of
LPDWORD
lpFileSizeHigh
//
address
of
high-order
word
for
file
size
);
❷ 用C語言怎樣測試一個文本文件的大小
#include <io.h>
#include <stdio.h>
int main(void)
{
FILE * f = 0; int fn = 0, sz = 0;
f = fopen("c:\\abc.txt", "rb");
if(!f) {
fprintf(stderr, "File Not Found.\n");
return 0;
}/*end if*/
fn = _fileno(f); /*取得文件指針的底層流式文件號*/
sz = _filelength(fn);/*根據文件號取得文件大小*/
printf("文件abc.txt大小為:%d位元組.\n", sz);
fclose(f);
return 0;
}/*end main*/
備註:上述程序適用於任何一種文件,都可以直接求出大小。
❸ 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語言使用標准完成給定的源代碼存儲程序,找出文件的大小
long length =0;
if((fp = fopen (argv[1],"rb"))==NULL){
printf( "Usage: fsize <file>" ) ;
exit(1) ;}
fseek(fp,0L,SEEK_END);
length=ftell(fp);
fclose( fp ) ;
printf ( " File %s size : %d in " , argv[1] , length ) ;
return 0 ;
❺ C語言中,怎麼知道文件的大小
你需要使用fseek函數將文件指針指向最後:
fseek(fp, 0L, SEEK_END);
sz = ftell(fp);
其中sz就是文件的大小。
當你知道文件的大小後,就可以通過fseek重新定義到文件開始的位置:
fseek(fp, 0L, SEEK_SET);
或使用下面的函數定義的文件開始:
rewind(fp);
可以到秒秒學上看看相關的內容,上面的課程講解得可以的。
❻ C語言能讀寫多大的文件
使用fopen和fseek的時候,在32位操作系統中,沒辦法操作2G以上的文件,可以通過open64、lseek解決這個問題
❼ 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語言獲取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語言建立文件有沒有大小限制啥的
從函數本身來說是沒有任何限制的,受限制的只是系統和保存的分區的文件格式等外部條件的。