问题标签 [fseek]

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 回答
1155 浏览

c++ - C 编程 fwrite 跳转到文件末尾

我正在编写一个 C 模块,但遇到了一个以前从未见过的有趣问题。

当我运行模块时,我得到如下打印输出:

我已将文件指针设置为文件的开头。当我写一些数据时,它应该在我寻找的位置写出数据,然后用写入的字节数(在本例中为 8)增加文件位置。但是,当我执行 ftell 时,位置似乎突然跳到了 6018(恰好是文件的原始大小加 8)。

为什么会发生这种情况以及如何防止这种行为?

0 投票
0 回答
841 浏览

c - fseek 在二进制文件中不成功

编辑发现我的问题。我没有意识到 fseek 的 origin 参数的唯一允许值是 SEEK_SET SEEK_CUR 和 SEEK_END,所以我将调用更改为 fseek(diskPointer, startOfData, SEEK_SET);

我有一个打开的文件以二进制模式读写,所以我在文件上使用 fseek、fread 和 fwrite。在整个代码中调用 fwrite 之前,我使用 fseek 将文件指针设置到正确的位置,但似乎 fseek 失败并返回非零值。fseek 失败可能有哪些原因?

这是我的函数,它应该将“值”写入文件。该值正在写入,但在文件的开头而不是我希望 fseek 让我到达的位置。'startOfData' 是一个常数,表示我正在尝试写入的扇区。

这是main(上面的writeToData函数被下面的createroot函数调用):

我的初始化磁盘功能:

0 投票
2 回答
141 浏览

c - 为什么这不是故意使无效的文件定位不引起任何错误

所以给定一个包含 100 个字节的二进制文件。我很确定 INVALID 应该导致错误,但为什么不呢?我很困惑,一次 INVALID 应该会引发语义错误,对吗?还是我误会了什么

0 投票
1 回答
128 浏览

c - C 编程中批量更新的方法

我需要在产品列表上执行此批量更新。此批量更新必须从数据库中检索每个产品并获得它的“订单数量”。然后必须将此“订购数量”添加到当前库存中:

例如:

当前库存:100 订购:150

批量更新后,它们必须是: 当前库存:250 订购:0

我已经完成了这个方法(见下文),但是当我运行它时,它并没有更新我的库存,也没有更新我的订单。

我尝试使用 fseek (pfp, -STRUCTSIZE,SEEK_CUR); 但这把我的程序变成了一个无限循环。此外,当我尝试使用 show All products in database 时,他们跳过了我的第一条记录,只是进入了一个仅显示最后一条记录的无限循环。我只需要最终从系统中删除 products.dat 文件,然后再重做一次。

有什么建议吗?我确实相信 fseek() 有问题。

提前致谢

0 投票
1 回答
914 浏览

c - 使用 fseek() 查找用户输入的位置

我需要向用户询问一个ID Number,然后使用该功能fseek()找到用户输入的ID Number的位置,然后才能修改记录。我有这样的事情:

0 投票
1 回答
3062 浏览

c - Windows 物理驱动器访问 fopen 和 fseek

我目前正在尝试将物理硬盘作为 C 中的二进制数据流访问。我已经安装了一个图像 (.img),它可以从操作系统 (Win 7) 读取。

我的 C 程序只是尝试以只读二进制模式打开物理驱动器,然后从驱动器中读取一些数据。

但是,如果我只是从流中读取数据而不寻找任何地方,一切都很好,我会取回存储在驱动器中的数据,并且由于我在流中的偏移量 0 处,我能够读取 MBR磁盘上。

但是,如果我尝试fseek从原点(零)偏移任何偏移量,则fseek返回 -1,表示它做不到。

我猜这可能是访问物理磁盘的权限/环 3/用户级别问题,我可能必须编写一个驱动程序来获得内核级别访问权限才能做到这一点,我只是很困惑为什么我可以从第一个扇区读取一些数据很好,但我无法寻找任何其他偏移量。我已经包含了我在下面编写的 C 程序的一部分。

0 投票
1 回答
776 浏览

c - 如何将逗号分隔的数字从文件读入C中的多维数组

我想编写一个函数,在文件中用逗号分隔的数字创建整数数组,如下所示:

第一列是每一行的编号,所以我需要的数据实际上是接下来的三列。
我的问题是:

  1. 由于我不知道数组的维度,所以我必须先读取最后一行的第一个数字。怎么做?我尝试使用 fseek 将我的文件指针指向文件末尾,然后找到前面的'\n',但我不知道如何处理逗号。
  2. 获得行数后,如何将所需的数据读入 N_row*3 数组?如何处理逗号和'\n'?

提前感谢您的帮助!

0 投票
1 回答
152 浏览

c - printf 在格式字符串中添加 \n

我正在尝试在 C 中构建 ar unix 命令的一个版本。我正在处理详细的输出,并且已经涵盖了大部分内容。但是,当我通读文件并将文件名放在格式字符串中时,会不断弹出一个秘密的新行。

此代码产生如下输出:

我无法弄清楚为什么文件名在新行上。这太痛苦了。我想也许我没有正确寻找,但如果我向上移动 1 个字节,它会开始切断名称,所以我认为不是这样。

另外,奖金,如果有人知道将八进制转换为unix文件权限的方法,我会很兴奋(即-rw-rw-rw)

0 投票
1 回答
112 浏览

c - 是否可以使用 fseek 偏移选项卡?

我正在尝试解析存档文件的标题,我需要跳过标签。我一直在尝试fseek()这样做,但我无法确定它是否可能。

这是一个示例,尽管我确定语法不正确:

fseek(stream, (long)"\t", SEEK_CUR);

我需要使用一种方法来移动文件指针,因为我需要跳过文件并将文件名从每个标题中拉出(制作存档内容的表格。)

0 投票
2 回答
1692 浏览

c - 二进制文件函数中的 fseek、fread 和返回指针 (C) 无法正常工作

我想返回指向我从文件中读取的结构的指针(它转到另一个基本上只是打印数据的函数。)函数通过 int sem 获取(序列号-1),然后的想法是,设置文件指针指向我想用 fseek 读取的结构的开头,然后简单地读取整个结构并返回指针。(示例:如果文件中写入的结构数为5,我想读取4号结构,则函数获取的sem值为3,则用fseek指针跳过前3个结构,函数读取并返回结构 4 号)。如果 sem 值为 0,它可以正常工作,但当我寻找任何其他结构时,它就不那么好了。我不知道出了什么问题!帮助?:)

结构定义:

如果问题出在此处,则打印数据的功能: