问题标签 [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 - LibXML2 + 拉解析器(stax):事件的流位置(ftell)?
我想创建一个索引,然后访问一个巨大的 xml 文件的某些特定部分,所以我需要获取一些“startElement”事件的偏移量(ftell
...)。
使用libxml2 ( http://www.xmlsoft.org/xmlreader.html )的 pull parser ( stax ) 接口是否可以使用libxml2获取事件流中的偏移量?
php - php 函数中 ftell 的输出
这是我的代码:
结果如下:
Content-Length 可能和我的不一样--518264,它会在你执行代码的时候动态改变,讨论没关系。为什么结果不是以下?
请解释文件指针对 fgets 和 ftell 和 fseek 函数的作用。
c - 使用 fseek 导致我的文件指针跳向 EOF
我正在尝试从文件中读取一行并返回刚刚读取的行的开头:
但就在 fseek 之后,我观察到 fp 跳向 EOF。我希望我的 fp 回到存储在 pos 中的位置。在程序的任何地方都没有声明其他 fp。
我知道 fp 达到 EOF 因为我调试并看到了该值。
我在 Windows 10 上。
c - 显示文件大小 [C]
我正在制作一个简单的套接字程序,以将文本文件或图片文件发送到连接到端口的另一个套接字。但是,我还想将文件的大小发送到客户端套接字,以便它知道要接收多少字节。
我还想实现一些可以发送一定数量的字节而不是文件本身的东西。例如,如果我要发送的文件是 14,003 字节,而我想发送 400 字节,那么只会发送 400 字节。
我正在实施这样的事情:
offset
几乎会将 40 个字节放入文件中,然后将任何sendSize
字节发送到其他程序。
我不断得到输出0
而不是5
。这背后有什么原因吗?
c - 为什么 ftell 打印 -1 作为文件指针的值?为什么 errno 会打印出“INVALID ARGUMENT”?
我在一个项目中有这两个函数,它将用户信息加载并保存到一个文件中。每个用户都保存在文件的新行中。我的问题是当我尝试使用 ftell(f) 时程序崩溃了。当我打印 ftell(f) 时,它会在使用 fopen() 打开文件后打印 -1。我试图在 errno 中查看错误,但是一旦我使用 fseek 修改文件指针 f 位置,它会在 fopen() 之后打印“NO ERROR”但是“INVALID ARGUMENT”。
我的问题出在我的 Load_File 函数中,但我也显示了 Save_File 函数以检查我在文件中是否正确写入。
c - 如何访问文件的特定部分并在 C 编程中使用它?
我正在学习如何用 C 语言编程,但我一直很难使用文件。
例如,我该怎么做,有两个文件。上面有名字和等级,从 1 到 10 名学生。喜欢:
如何从给定的学生那里访问特定的数字并添加数字,例如,我必须使用 fseek 、 SEEK_END 还是应该使用 ftell?并取所有的中位数?
代码应该如何?
编辑1:我尝试了什么(对不起葡萄牙语中的变量,我添加了一些评论):
c - fseek() 和 ftell() 循环失败
我需要遍历一个目录,data
并在一个字符串中读取满足特定条件的每个文件并对其进行处理。由于某种原因,它在调用后失败fseek
(输出只是目录中第一个文件的名称)。
知道我在做什么错吗?
c - ftell 和 fseek 读取 txt 文件的奇怪行为
我正在尝试读取一个包含“图片”(字符矩阵)的 txt 文件,而 ftell 和 fseek 的工作方式似乎与我在课堂和网络上所学的方式不同。
这是代码:
而不是在文件中跳转 8 个字符,光标仅移动 3 test1 始终为 0,而 test2 增加了两倍 4 比 5 和 6..
在我看来,这对于一个程序来说是一个非常奇怪的行为。我究竟做错了什么?
编辑:
文本文件:
我正在尝试通过从上到下遍历每一列的字符来读取文件字符。
我得到的第一个字符是 '1' 然后是 '5' 然后是 '\n'
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 可能不必为不是真正文件的东西工作。但是,我相信他们确实在那里考虑了设备。
c - fscanf 是否向后移动文件指针?
这些是我的文件 'unsorted.txt' 的内容:
3 罗伯特·贾斯汀·特朗普
这是我的代码:
在执行时,它给出以下输出:
为什么它-1
在第二种情况下返回?0
它应该从1
右移?
注意:可以打开文件,因为那样它会如何在第一次调用中打印 0 和文件中的第一个字符而无法打开?