You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino IDE中如何实现类似ftell()的文件长度获取功能?

问题:Arduino中如何实现类似C语言ftell()的功能?

我在C语言中用以下代码计算文件中值的数量:

fseek(file, 0, SEEK_END);
size_t inSize = ftell(file);
size_t no_ofelem = inSize/2;

改成Arduino IDE代码后:

file.seek(file.size()); 
inSize = file.position();  
no_ofelem = inSize/2;

两者结果不一致——C语言中no_ofelem为2502,Arduino中为10。请问如何在Arduino IDE中实现类似ftell(file)的功能?


解决方案

你不需要通过seek()加position()的方式获取文件大小,Arduino的File对象直接提供了size()方法,它的作用就等同于C语言中fseek(file, 0, SEEK_END)后调用ftell(file)的效果,直接返回文件的总字节数。

正确的代码应该是:

size_t inSize = file.size();
size_t no_ofelem = inSize / 2;

为什么原来的代码出错?

file.seek(file.size())会将文件指针移动到末尾,但部分存储介质(比如SD卡)的File对象实现中,position()返回的指针位置可能存在同步问题,导致得到错误的数值。而size()方法是直接从文件系统中读取文件的实际大小,结果更可靠,完全匹配你在C语言中想要的ftell()效果。

内容的提问来源于stack exchange,提问作者stella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:11:06