c语言读取文件的字节大小(c语言获取文件大小)

今天给各位分享c语言读取文件的字节大小的知识,其中也会对c语言获取文件大小进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、c代码中如何获取一个文件的字节数~~2、如何用C语言获取文件的大小3、C语言 读取文件到内存4、c语言中对文件进行读写,写入的文件字节数很多,为什么读的时候只能读到固定字节的数,而且只有1千多字节。5、用c语言求数据文件的字节大小6、C语言获取txt文件大小两种方法的差异

c代码中如何获取一个文件的字节数~~

用以下的方法可以获取一个文件的字节数:

先用fopen打开文件,然后把文件指针指向文件尾.

再用ftell获得文件指针当前位置(即文件长度).

源代码:

#include “stdafx.h”

#include stdio.h

#include iostream

using namespace std;

int main()

{

FILE* fp = NULL;

int nFileLen = 0;

fp = fopen(“c:/Test.txt”, “rb”);

if (fp == NULL)

{

cout “can’t open file” endl;

return 0;

}

fseek(fp,0,SEEK_END); //定位到文件末

nFileLen = ftell(fp); //文件长度

cout “file len = ” nFileLen endl;

return 0;

}

可以用 stat (win 下 _stat)函数直接得文件尺寸。

man 2 stat

1.MFC中的方法:(C++)

CFileStatus status;

CFile::GetStatus(“D:\\test.txt”,status);

long lSizeOfFile;

lSizeOfFile = status.m_size;

lSizeOfFile的值就是D:\\test.txt文件的大小

2.标准C获得文件大小的5种方法

(注意:”__FILE__”指的是当前文件,你可以改为有效路径的目标文件,比如”D:\\test.txt”)

struct stat {

dev_t st_dev; /* ID of device containing file */

ino_t st_ino; /* inode number */

mode_t st_mode; /* protection */

nlink_t st_nlink; /* number of hard links */

uid_t st_uid; /* user ID of owner */

gid_t st_gid; /* group ID of owner */

dev_t st_rdev; /* device ID (if special file) */

off_t st_size; /* total size, in bytes */

blksize_t st_blksize; /* blocksize for filesystem I/O */

blkcnt_t st_blocks; /* number of blocks allocated */

time_t st_atime; /* time of last access */

time_t st_mtime; /* time of last modification */

time_t st_ctime; /* time of last status change */

}

#include “stdafx.h”

#include “stdio.h”

#include sys/stat.h

#include io.h

#include FCNTL.H

int getfilesize()

{

int iresult;

struct _stat buf;

iresult = _stat(__FILE__,buf);

if(iresult == 0)

{

return buf.st_size;

}

return NULL;

}

int getfilesize01()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _filelength(fp);

//return NULL;

}

int getfilesize02()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _lseek(fp,0,SEEK_END);

//return NULL;

}

int getfilesize03()

{

int fp;

fp=_open(__FILE__,_O_RDONLY);

if(fp==-1)

return NULL;

return _lseek(fp,0,SEEK_END);

//return NULL;

}

int getfilesize04()

{

FILE *fp;

if((fp=fopen(__FILE__,”r”))==NULL)

return 0;

fseek(fp,0,SEEK_END);

return ftell(fp); //return NULL;

}

int getfilesize05()

{

FILE *fp;

char str[1];

if((fp=fopen(__FILE__,”rb”))==NULL)

return 0;

for(int i = 0;!feof(fp);i++)

{

fread(str,1,1,fp);

}

return i – 1; //return NULL;

}

int main(int argc, char* argv[])

{

printf(“getfilesize()=%d\n”,getfilesize());

printf(“getfilesize01()=%d\n”,getfilesize01());

printf(“getfilesize02()=%d\n”,getfilesize02());

printf(“getfilesize03()=%d\n”,getfilesize03());

printf(“getfilesize04()=%d\n”,getfilesize04());

printf(“getfilesize05()=%d\n”,getfilesize05());

return 0;

}

c语言读取文件的字节大小(c语言获取文件大小)

如何用C语言获取文件的大小

/*  解题思路: 以只读方式打开某一文件,然后将文件指针定位在文件结尾的位置,利用ftell函数返回指针的在文件中的相对位置即可。

*/

#include “stdio.h”

main()

{ FILE *fp;   /*定义文件指针*/

  long cnt;   /*定义变量cnt用来存储文件大小数据*/

  fp=fopen(“c:\\1.txt”,”r”);   /*此处请填写测试文件的地址,并以只读(“r”)方式打开文件*/

  if( fp==NULL )  /*如果打开的文件不存在,则退出*/

     { exit(0);

       printf(“文件打开失败!”);

     }

  fseek(fp,0L,SEEK_END);   /*利用fseek函数将指针定位在文件结尾的位置*/

  cnt=ftell(fp);   /*利用ftell函数返回指针相对于文件开头的位置,以字节计算*/

  printf(“文件所占的字节数为%ld个\n”,cnt);   /*进行输出*/

}

C语言 读取文件到内存

1.文件的大小。

文件大小:该文件所占的存储空间的大小,基本单位为字节B,字节向上分别为KB、MB、GB、TB,每级为前一级的1024倍,比如1KB=1024B,1M=1024KB。

2.是否可以不预先分配内存。

可以不预先分配跟文件大小一致的内存,但是从文件中读出的每一行都要分配一个内存,可以为每一行设定一个固定的内存大小,比如A字节,然后用C语言的malloc函数为该行数据分配内存,读出数据后,判断分配的内存是否够用,如果不够用,可以用C语言的realloc函数对该块内存进行再分配。

malloc函数

malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。

void* 类型表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。

realloc函数

realloc的全程是reset allocation,中文名叫动态内存调整,用于调整一块连续的已分配的内存块区域。

3.数组和struct结构体的建立。

double数组:double a[100];

字符数组:char a[100];

struct结构体:

struct st {

double a[100];

char b[100];

};

c语言中对文件进行读写,写入的文件字节数很多,为什么读的时候只能读到固定字节的数,而且只有1千多字节。

因为读进来的数,你要存放到某个地方,你需要先知道存放的地方有多大,读入数量不能超过这个地方的大小。

例如,存放到 buff, 存放的地方大小是 buff_size (例如 2048字节)

while (fgets(buff,buff_size,fin) !=NULL){ };

fgets 是读一行,行长度不大于 buff_size , buff 里就放 完整的一行,大于,就读入/放入 buff_size 个字节。

fread, 也要提供 大小。

buff_size 数值大小 也可以很大,只要动态分配能成功分配就行,并不限于 1k,2k.

用c语言求数据文件的字节大小

stdio.h足够.

data.txt可以换成你的数据文件名。

#include stdio.h

int main(int argc, char **argv)

{

long start, end;

FILE *fp = fopen(“data.txt”, “rb”);

if(fp){

start = ftell(fp);

fseek(fp, 0L, SEEK_END);

end = ftell(fp);

printf(“%ld\n”, end – start);

fclose(fp);

}

return 0;

}

C语言获取txt文件大小两种方法的差异

我测试了你的代码:

#includestdio.h

#includestring.h

#includestdlib.h

void main()

{

FILE *p=fopen(“d:\\jiuibf.txt”,”rt”);

int length = 0;

for(;fgetc(p)!=EOF;length++);

fclose(p);

printf(“第一种方式,文件长度=%d\n”,length);

p=fopen(“d:\\jiuibf.txt”,”rb”);

fseek(p,0,2);

length=ftell(p);

fclose(p);

printf(“第二种方式,文件长度=%d\n”,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);

程序的输出是:

原因分析:

在windows下,以文本方式写入文件的\n会被转换为\r\n(也就是0x0D0A),输出的时候,\r\n会被转换回\n。

fgetc在读入时会将\r\n转换成一个\n;上面的文本文件有6个回车换行。

所以第一种方式比第二种方式少6

C语言获得文件的长度方式就是第二种:

FILE*fp;

fp=fopen(“localfile”,”rb”);// localfile文件名

fseek(fp,0,SEEK_SET);

fseek(fp,0,SEEK_END);

long longBytes=ftell(fp);// longBytes就是文件的长度

关于c语言读取文件的字节大小和c语言获取文件大小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 00:09:14
下一篇 2024年3月31日 00:16:22

相关推荐

  • c语言lunwen,C语言论文参考文献

    为什么要学习c语言论文 C语言功能齐全 C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另 外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑 判断功能也比较强大, 可以实现决策目的。 增强学生学习C语言的信心和动力。选择适合中职教育的教材与教学方式。合理设置教学目标 中职学生普遍基础知识不扎实。 由此可以肯…

    2024年5月18日
    3800
  • c语言读,c语言读取文件

    C语言读取文件数据 首先我们打开需要读取的文件,点击打开左上角文件中的“另存为”。然后我们在弹出来的窗口中点击打开保存类型。然后我们在弹出来的窗口中点击选择“C source file(*.c)”,之后点击保存即可在C语言中读取出来了。 首先需要包含文件输入输出头文件#include stdio.h 打开数据文件,使用fopen()函数:FILE *fp =…

    2024年5月18日
    4200
  • c语言语句看不懂,c语言case语句用法

    初学c语言,四个数排序,用if。中间的几个if语句看不懂,能给我讲讲吗… 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 (1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句(可选)是if语句的一部分,必须与if配对使用,不能单独使用。 这样最大的个元素会移动到第一个元素的位置上。…

    2024年5月18日
    3700
  • c语言打印数组,C语言打印数组每个元素

    C语言,指针数组:怎么把arr[1]以%d的格式打印出来? 1、而 int p={a,b} 的问题在于,它应该是指向整型指针,而不是整型指针数组。 2、格式说明符:规定了相应输出表列内容的输出格式,以%打头,如%d、%o等 转义字符:用来输出转义字符所代表的控制代码或者特殊字符,比如常用的‘\n、‘\t普通字符:需要原样输出的字符。 3、指针传递的实质就是传…

    2024年5月18日
    5300
  • c语言十进制转化成八进制,c语言编程将十进制数转化为八进制数和十六进制数

    C语言十进制怎么转换八进制,求详细描述,不要编译器运行的结果?_百度… 进制数10转换为8进制的转换过程如下:10/8 = 1 …(余2)1/8 = 0 …(余1) (1/8中的1是上次运算的商)所以10的8进制数为12 在C语言中,用012来表示8进制12,也即在8进制数的前面加一个数字0。 十进制怎么转化为八进制如下:…

    2024年5月18日
    4100
  • c语言中怎么遍历数组,在c语言中可以用来遍历数组元素的循环语句是

    在c语言中可以用来遍历数组元素的循环语句是 有三种循环方式:FOR循环、DO-WHILE循环 、WHILE循环,字符串之间的比较,它有专门的字符串比较函数:strcmp函数。 c[i-1] = c[i-2];} while (–i 0);puts(c);return 0;} 该程序的输出结果是 bcda。程序首先定义了一个长度为6的字符数组 c,…

    2024年5月18日
    4300
  • arp协议研究在vc6.0环境下的c语言,c语言实现arp协议

    简述在VC++6.0环境下运行一个C++源程序的步骤 首先,打开我们的VC++0编程软件,点击左上角的“文件”菜单,并选择“新建”。接着,选择“win32consoleapplication”(win32控制台程序)。然后,填写好工程的名称,以及创建的位置,并点击“确定”按钮。 首先需要点击文件,在出现的下拉框中,选择新建。先新建一个工程,工程栏选择win3…

    2024年5月18日
    3300
  • 五子棋c语言程序,五子棋c语言程序设计如何绘制棋盘

    C语言编一个五子棋的程序 1、-10-29 求一个c语言编写的五子棋游戏代码 1 2012-01-08 编写一个五子棋的游戏程序。 2、从起点到终点画个矩形,然后分成若干等分,垂直或水平划线,至于规格你看看五子棋标准棋盘就能画出来了,然后是工具的问题,Directx或者GDI+都可以画图哦。 3、我建议你采用下子后判断的方式,即玩家1下了一个字后,像该子周围…

    2024年5月18日
    3800
  • 魂斗罗c语言源代码免费下载,魂斗罗c语言源代码免费下载安装

    c语言源程序的扩展名是什么 c语言源程序的扩展名是:“.c”。由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。 在Windows平台上,C语言源代码文件一般扩展名为.c。 C语言源程序后缀为.c ,在windows平台上,编译后的后缀为.obj,连接后的后缀为.exe。 C语言源程序后缀为.c,编译后的后缀为 .obj 或 .o,连接后生成的…

    2024年5月18日
    3700
  • c语言>5u,c语言5d是什么意思

    c语言中-5u为为什么什么等于65531 1、会溢出,所以等于2的32次方减5。相当于向下溢出就要“向高位借位”,unsigned有32个二进制位,所以每次溢出就加2的32次方。 2、加个大写字母U意思是无符号整型。在对应的带符号整型前面加上unsigned,也就是unsigned int、unsigned short、unsigned long、unsig…

    2024年5月18日
    3800

发表回复

登录后才能评论



关注微信