问题标签 [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.

0 投票
1 回答
247 浏览

c - LibXML2 + 拉解析器(stax):事件的流位置(ftell)?

我想创建一个索引,然后访问一个巨大的 xml 文件的某些特定部分,所以我需要获取一些“startElement”事件的偏移量ftell ...)。

使用libxml2 ( http://www.xmlsoft.org/xmlreader.html )的 pull parser ( stax ) 接口是否可以使用libxml2获取事件流中的偏移量?

0 投票
4 回答
1306 浏览

php - php 函数中 ftell 的输出

这是我的代码:

结果如下:

Content-Length 可能和我的不一样--518264,它会在你执行代码的时候动态改变,讨论没关系。为什么结果不是以下?

请解释文件指针对 fgets 和 ftell 和 fseek 函数的作用。

0 投票
1 回答
275 浏览

c - 使用 fseek 导致我的文件指针跳向 EOF

我正在尝试从文件中读取一行并返回刚刚读取的行的开头:

但就在 fseek 之后,我观察到 fp 跳向 EOF。我希望我的 fp 回到存储在 pos 中的位置。在程序的任何地方都没有声明其他 fp。

我知道 fp 达到 EOF 因为我调试并看到了该值。

我在 Windows 10 上。

0 投票
4 回答
444 浏览

c - 显示文件大小 [C]

我正在制作一个简单的套接字程序,以将文本文件或图片文件发送到连接到端口的另一个套接字。但是,我还想将文件的大小发送到客户端套接字,以便它知道要接收多少字节。

我还想实现一些可以发送一定数量的字节而不是文件本身的东西。例如,如果我要发送的文件是 14,003 字节,而我想发送 400 字节,那么只会发送 400 字节。

我正在实施这样的事情:

offset几乎会将 40 个字节放入文件中,然后将任何sendSize字节发送到其他程序。

我不断得到输出0而不是5。这背后有什么原因吗?

0 投票
1 回答
514 浏览

c - 为什么 ftell 打印 -1 作为文件指针的值?为什么 errno 会打印出“INVALID ARGUMENT”?

我在一个项目中有这两个函数,它将用户信息加载并保存到一个文件中。每个用户都保存在文件的新行中。我的问题是当我尝试使用 ftell(f) 时程序崩溃了。当我打印 ftell(f) 时,它会在使用 fopen() 打开文件后打印 -1。我试图在 errno 中查看错误,但是一旦我使用 fseek 修改文件指针 f 位置,它会在 fopen() 之后打印“NO ERROR”但是“INVALID ARGUMENT”。

我的问题出在我的 Load_File 函数中,但我也显示了 Save_File 函数以检查我在文件中是否正确写入。

0 投票
1 回答
514 浏览

c - 如何访问文件的特定部分并在 C 编程中使用它?

我正在学习如何用 C 语言编程,但我一直很难使用文件。

例如,我该怎么做,有两个文件。上面有名字和等级,从 1 到 10 名学生。喜欢:

如何从给定的学生那里访问特定的数字并添加数字,例如,我必须使用 fseek 、 SEEK_END 还是应该使用 ftell?并取所有的中位数?

代码应该如何?

编辑1:我尝试了什么(对不起葡萄牙语中的变量,我添加了一些评论):

0 投票
1 回答
722 浏览

c - fseek() 和 ftell() 循环失败

我需要遍历一个目录,data并在一个字符串中读取满足特定条件的每个文件并对其进行处理。由于某种原因,它在调用后失败fseek(输出只是目录中第一个文件的名称)。

知道我在做什么错吗?

0 投票
0 回答
515 浏览

c - ftell 和 fseek 读取 txt 文件的奇怪行为

我正在尝试读取一个包含“图片”(字符矩阵)的 txt 文件,而 ftell 和 fseek 的工作方式似乎与我在课堂和网络上所学的方式不同。

这是代码:

而不是在文件中跳转 8 个字符,光标仅移动 3 test1 始终为 0,而 test2 增加了两倍 4 比 5 和 6..

在我看来,这对于一个程序来说是一个非常奇怪的行为。我究竟做错了什么?

编辑:

文本文件:

我正在尝试通过从上到下遍历每一列的字符来读取文件字符。

我得到的第一个字符是 '1' 然后是 '5' 然后是 '\n'

0 投票
1 回答
337 浏览

c - ftell() 在内存流上使用时的“正确”语义

任何人都可以解释 ftell() 在内存流上使用时的“正确”语义。

给定以下程序:

RHEL7 上的输出是:

而 OpenSUSE Leap 42 上的输出是:

(这导致我正在查看的代码中的单元测试失败)

我的问题是:

  • fseek() 是否需要(按标准)使 ftell() 的结果有效?
  • 这是 glibc 的错误还是行为变化?
  • 为什么它不能在 OpenSUSE 上运行?

最明显的实现是将文件位置指示器作为内存缓冲区中的一个索引,分配给 fmemopen。很难看出这怎么会出错。

确实执行:

https://github.com/bminor/glibc/blob/73dfd088936b9237599e4ab737c7ae2ea7d710e1/libio/fmemopen.c

有 c->pos = pos + s; 在第 85 行。

并且大概 ftell() 只是返回 c->pos (以迂回的方式)

在 2.17 和 2.22 之间对 glibc 源代码进行了一些重组,如果我能解开它,这可能会解释这一点。但它是错误还是功能?

我不确定 Posix 和 C 标准是否完全指定 ftell 是否应该为内存流正常工作。直觉上很难理解为什么它不应该被强制执行,因为它应该只是工作。

http://man7.org/linux/man-pages/man3/fmemopen.3.html

说:

“当前位置由 I/O 操作隐式更新。它可以使用 fseek(3) 显式更新,并使用 ftell(3) 确定。”

其他手册页提到 ftell 可能不必为不是真正文件的东西工作。但是,我相信他们确实在那里考虑了设备。

0 投票
2 回答
1012 浏览

c - fscanf 是否向后移动文件指针?

这些是我的文件 'unsorted.txt' 的内容:

3 罗伯特·贾斯汀·特朗普

这是我的代码:

在执行时,它给出以下输出:

为什么它-1在第二种情况下返回?0它应该从1右移?

注意:可以打开文件,因为那样它会如何在第一次调用中打印 0 和文件中的第一个字符而无法打开?