C语言获取超大文件(超过2G)大小的功能

【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结 文章目录项目框架源代码 项目框架 源代码 阅读详情

C语言获取超大文件(超过2G)大小的功能

昨天在使用fseek及ftell获取大小超过2G的文件大小时发现ftell获取到的值为-1,即便其返回值类型定义为long long还是为-1.
经过查阅文档才发现,针对超大文件有新的函数可以获取文件大小。
fseeko64 和 ftello64两个方法结合就能得出文件正确的大小了。

使用方式如下:

off64_t getFileSize(char *filePath) {
    FILE *f;
    f = fopen(filePath, "rb");
    if (NULL == f) {
        printf("getFileSize fopen error\n");
        return -1;
    }

    if (0 != fseeko64(f, 0, SEEK_END)) {
        printf("getFileSize fseek error\n");
        return -1;
    }

    off64_t fileSize = ftello64(f);
    if (fileSize < 0) {
        printf("ftell error\n");
    }
    printf("fileSize:%lld\n", fileSize);
    fclose(f);
    return fileSize;
}
Linux系统遍历文件夹 获取文件大小的操作(C语言实现)  /** linux 下遍历文件夹以及获取文件大小 */ #include #include #include #include /** 获取文件大小,但是文件大小不能超过2G ,该方法不推荐使用 */ unsigned long get_file_size_small(const char *filename) {     FILE *pFile = NULL; 阅读详情

相关推荐

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4969

文件操作

int fseek(FILE *stream, long offset, int whence);        long ftell(FILE *stream);  int fseeko(FILE *stream, off_t offset, int whence);//off_t 为64位整数        off_t ftello(FILE *stream); 

manyangyang520的专栏 655

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

大文件操作(eg:4G)

大文件指的是超过4G的文件。在32bit机器上操作这样的大文件时,会出现问题。具体的,下面会具体讲解。 大文件问题 首先32位机器用fopen/fclose打开大文件没有问题,顺序读写操作while(!feof(fp)){ fread / fgets / fscanf }或while(1){ fwrite / fputs / fprintf} 也没有问题。由于32位机器下long是32位,故f

IT_Linux 5619

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2051

ks-快手滑块验证码-Js逆向

本文分析了快手滑块验证码的破解过程。首先通过抓包找到验证码背景图接口,发现需要动态获取captchaSession参数。然后深入分析验证流程,发现verifyParam参数被加密处理,需要追踪其生成逻辑。文章详细解析了加密参数c的构成,包括captchaSn、滑动距离、轨迹信息等,并指出轨迹验证较为严格。最后通过对比浏览器和本地生成的加密值,确认加密逻辑正确,但指出轨迹生成仍需优化。作者建议参考相关文章深入分析轨迹逻辑,并提供了验证成功的截图作为参考。

2302_76420666的博客 1876

linux读写2G+文件

无

积累与备忘 361

YOLOv8改进 | 融合篇,YOLOv8主干改进融合网络之MobileNetV3+CA注意机制,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。YOLOv8中的主干网络替换成MobileNetV3+引入CA注意机制

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1881

linux c 语言之--fseek(),fseeko(),fseeko64(),ftell(),ftello()讲解

转载:http://blog.youkuaiyun.com/lemoncyb/article/details/16841317fseek() 函数讲解:函数定义:int fseek(FILE *stream, long offset, int fromwhere);int fseeko(FILE *stream, off_t offset, int fromwhere);int fseeko64(FILE *s

大圣编了个程 8194

OpenDataLab 大模型训练数据集下载记录

大模型 训练数据集

u013558123的博客 3341

esp8266步进电机驱动控制

blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) Arduino uno的板子的程序 esp8266板子接入到Arduino uno的控制引脚上的5,6,7 esp8266程序 //****库***** #define BLINKER_WIFI //官方wifi协议库 #define BLINKER_PRINT Serial //串口协议库 #include <Blinker.h&gt

perseverance51博客 2854

C语言equivalent用法,fseeko,fseeko64;(fseeko, fseeko64; ftello, ftello64 Visual C equivalents)

fseeko,fseeko64;(fseeko, fseeko64; ftello, ftello64 Visual C equivalents)有人可以告诉我什么是Visual C等效的fseeko,fseeko64; ftello,ftello64?谢谢 :)Could someone help me by telling what is the Visual C equivalent of ...

weixin_32715349的博客 1136

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

linux写文件超过大小,linux下c语言编程,获取超大文件大小(size超过2GB)

最近做一个项目,需要获取文件大小,而文件大小又是超过 2GB 的。这就导致很多 c 标准函数不能正常工作。linux c语言获取文件大小常用方法常用方法有两类:利用 seek 系函数。以 lseek 函数为例,它可以将定位要读写文件的位置,正常情况下,它会返回当前读写指针位置。让其指向文件末尾,即可获得文件大小。利用 stat 系函数。推荐用这个函数,比较简单,是专用来获取文件信息的函数。seek...

weixin_35747627的博客 788

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

c语言获取文件大小

C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小。许多语言都可以直接调用函数解决,C语言中却没有直接对应的函数获取文件大小,下面介绍一个简单的方法。 代码如下: int main() { char filename[100]; FILE *fp=fopen(filename,“r”);//filename为要打开的文件名,r为打开文件格式 //新版本中打开文件fopen_s(&fp,filename,“r”); if(!fp) return

m0_47665254的博客 2180

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux 下C语言获取文件大小

Linux 下C语言获取文件大小 C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在c语言中就比较麻烦,例如获取一个文件的大小。Java中File类有个length函数,Python中os.path包中有个getsize函数,C语言中却没有直接对应的函数获取文件大小。 目前,网上有一种流传很广的方法,读取文件到内存,然后跳转到文件末尾,查看跳转的长度。代码如下: ...

Gick 4089

C语言获取文件大小

C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小。Java中File类有个length函数,Python中os.path包中有个getsize函数,C语言中却没有直接对应的函数获取文件大小。        目前,网上有一种流传很广的方法,读取文件到内存,然后跳转到文件末尾,查看跳转的长度。代码如下: int file_size(char

姚光超的专栏 10万+

获取目录的大小函数linux,Linux 下C语言获取文件大小

Linux 下C语言获取文件大小C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在c语言中就比较麻烦,例如获取一个文件的大小。Java中File类有个length函数,Python中os.path包中有个getsize函数,C语言中却没有直接对应的函数获取文件大小。目前,网上有一种流传很广的方法,读取文件到内存,然后跳转到文件末尾,查看跳转的长度。代码如下:int file_size...

weixin_35650041的博客 1284

关于获得文件超过2G,超过4G文件大小的方法

获得文件属性(大小等)的函数有stat/fstat/lstat,头文件为: #include #include int stat(const char *restrict pathname, struct stat *restrict buf); 提供文件名字,获取文件对应属性。 int fstat(int filedes, struct stat *buf); 通过文件描述符获取文件

liuronghust的专栏 6036

linux c 获取文件大小

问题描述:在使用c语言获取文件大小的时候发现有的文件大小可以正确获取,有的不能,以下为初始代码unsigned long get_file_size(const char *filename) { unsigned long size; FILE* fp = fopen( filename, "rb" ); if(fp==NULL) { ...

小明的专栏 6237

C/C++ 获取文件大小

在C语言中测试文件的大小,主要使用二个标准函数。 1.fseek   函数原型:int fseek ( FILE * stream, long int offset, int origin );   参数说明:stream,文件流指针;offest,偏移量;orgin,原(始位置。其中orgin的可选值有SEEK_SET(文件开始)、SEEK_CUR(文件指针当前位置)、SEEK...

acxm45824的博客 3090

Linux下获取文件大小的方法

前几天在工作中需要写一段代码,获取一些视频文件的大小,心想:这还不简单吗?直接用标准C 的文件操作函数就OK了。于是写了下面的一段代码来实现:unsigned long get_file_size(const char *filename){unsigned long size;FILE* fp = fopen( filename, "rb" );if(fp==NULL)

Simon的专栏 1万+

C语言中获取文件大小的函数

问题: 解决办法:

David_xtd的专栏 9491

linux 外接硬盘写入超过2G,linux c 读写超过2G的大文件解决办法

linux默认环境下打开、读、写超过2G的文件会返回错误。定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效。注意它必须定义在所有头文件之前。#define_FILE_OFFSET_BITS64 #include #include #include #include #include #include 查了查书,...

weixin_39959126的博客 818
上一篇: 使用QT获取电脑的DPI
下一篇: C++使用TCP SOCKET发送超大文件(超过2G)
codears
博客等级 码龄11年 2474粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codears

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值