问题标签 [ftell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么 ftell 会跳过文件中的某些位置?
我有一个名为 myfile.txt 的文本文件,内容如下:
我的代码:
输出是:
每当遇到 \n 时,ftell 都会跳过一个值,例如它跳过了值 7。为什么会这样?请详细解释一下,我想知道。
c - ftell() 在追加模式下返回的文件指针位置的初始值
当文件以“a”(追加)模式打开时,我正在查看 SO post fseek does not work,当我们以“a”模式打开文件时,我对 ftell() 返回的文件指针的初始值有疑问。我使用包含数据“Hello Welcome”的 file1.txt 尝试了下面的代码,并在各个位置打印了指针的位置。最初 ftell() 将返回位置 0。追加后, ftell() 将返回最后一个位置。如果我们做 fseek() 文件指针被改变,在这种情况下我移回 0 位置。在附加模式下,我们无法读取数据。为什么指针最初处于 0 位置?还有在附加模式下使用 fseek 吗?
c - 在 C 中显示文本文件中的部分文本
我有一个文本文件,我想在特定时间只提取其中的特定部分。为此,我在写作时使用 ftell() 记录开始和结束位置,然后使用 fseek() 跳转到该特定位置.
我试过这个,但遇到程序意外异常终止。请指导我如何正确执行我的任务。
c - 使用 ftell 查找文件大小
如果 ftell(f) 告诉我们当前文件位置,那么这里的大小应该是文件末尾到开头的偏移量。为什么大小不是 ftell(f)+1?ftell(f) 不应该只给我们文件末尾的位置吗?
c++ - _popen(dir, rt) fseek(dir, and ftell() 返回 0
在这段代码中, ftell(dir) 返回 0。但是当我使用 fread_s() 阅读时,所有预期的文本都出现了。知道为什么 ftell() 在这种情况下返回 0 吗?
c++ - (Windows) 使用 ftello() 为“一些”二进制文件返回不正确的文件大小
我使用fseeko
先将文件指针移动到文件末尾,然后使用ftello
获取二进制文件大小。我参考这个页面不要使用 fseek...并遵循“合规解决方案(POSIX ftello())”部分中的完全相同的代码。
我的问题是这适用于某些二进制文件,但不适用于其他一些二进制文件。我现在正在寻找一种访问二进制文件大小的通用方法。
我更喜欢在 C 中使用 stdio 而不是任何基于操作系统的函数。谢谢!
c - y 文件中有变音符号
我正在处理一个示例问题,我必须使用 fseek() 和 ftell() 反转文本文件中的文本。我成功了,但是将相同的输出打印到文件中,我得到了一些奇怪的结果。我输入的文本文件如下:
redivider
Racecar
kayak
civic
level
refer
这些都是回文
命令行中的结果效果很好。然而,在我创建的文本文件中,我得到以下内容:
ÿsemordnilap lla era esehTT
referr
levell
civicc
kayakk
racecarr
redivide
我从这个问题的答案中知道这对应于 C 中 EOF 的文本文件版本。我只是对为什么命令行和文本文件输出不同感到困惑。
没有错误,我只想要相同的输出。
c - c问题中IJVM块文件的大小错误
我正在尝试实现 IJVM 并读取二进制文件。
我知道 .ijvm 文件包含一个 32 位幻数和任意数量的数据块,并且一个数据块包含三个部分。我的意图是首先读取并存储始终大小不变的幻数,然后将数据块存储到不同的数组中。.ijvm 文件如下所示:
1d ea df 广告 00 01 00 00 00 00 00 00 00 00 00 00 00
00 00 07 10 30 10 31 60 fd ff
前 4 个字节 ( 1d ea df ad
) 是魔法 n。其余的数据块。
读取文件后,我确定总大小为 27 个字节,因此其余部分应为 23 个字节。
然而,无论我尝试什么,尽管正确存储和读取魔法和数据部分,我总是得到错误的数据部分大小,而不是我认为应该的 23 字节。
你能解释一下我错过了什么吗?为什么两个 dataBlocklen 都不给 23 个字节?
c - 计算文件长度时是否应该检查 fseek() 的返回值?
我有这个惯用的片段来获取二进制文件的长度:
…我知道,对于二进制流[ 1 ],迂腐fseek(file, 0, SEEK_END)
的行为是未定义的——但坦率地说,在我也没有这个问题的平台上,无论如何这是另一个问题的主题…</p>
fstat()
我的问题是:fseek()
在这种情况下我应该检查返回值吗?
我从来没有见过fseek()
在这样的情况下被检查过,我也想知道fseek()
这里可能会返回什么样的错误。
编辑:
在阅读了Clifford 的回答后,我也认为在计算文件大小时处理fseek()
和返回值的最佳方法是编写一个专用函数。ftell()
但是 Clifford 的好建议不能处理size_t
数据类型(毕竟我们需要一个大小!),所以我想最后最实用的方法是使用指针来存储文件的大小,并保留返回我们的专用功能的价值仅适用于失败。这是我对 Clifford 安全尺寸计算器解决方案的贡献:
因此,当我们需要知道文件的长度时,我们可以简单地执行以下操作:
c - 用于文本文件的 Ftell
我使用这个小程序来了解 ftell 是如何工作的。我创建了一个 txt 文件,然后输入“15”,然后在第二行输入“no”。所以我期望它打印 0,然后在它读取 15 之后,打印 2,然后因为 no 在第二行,这意味着我在第一行留下了一些“可用点”,我可以用更多字符填充我希望它打印的数字肯定大于 7(这是它实际打印的)。为什么?
输出:0 2 7