问题标签 [fread]

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 投票
3 回答
48464 浏览

c - 如何在c中读取二进制文件?(视频、图像或文本)

我正在尝试将文件从指定库复制到当前目录。我可以完美地复制文本文件。任何其他文件都会损坏。程序在它应该检测到一个 feof 之前。

0 投票
3 回答
1729 浏览

php - 是在单独的行上使用 fseek() fread() 还是对整个文件和 substr 进行解析更好?

为了更清楚地说明这一点,我将放置代码示例:

方法 1 中大约有 40 个 fread()(可能有 15 个 fseek()),而方法 2 中有 1 个 fread()。我唯一想知道的是,当您实际上只提取 100 个字节时,加载 1000000 个字节是否过大总字节数(在文件中间都相对靠近)。

那么哪个代码会执行得更好呢?使用哪个代码更有意义?一个快速的解释将不胜感激。

0 投票
6 回答
551 浏览

c++ - 从另一个文件 C++ 中的文件名创建文件

我正在用 C++ 对几个大文件进行排序。我有一个文本文件,其中包含所有输入文件的名称,每行一个。我想一次读取一个文件名,将它们存储在一个数组中,然后使用每个名称创建一个文件。现在,我正在使用 fopen 和 fread,它们需要字符数组(我正在尝试优化速度),所以我的文件名被读入字符数组数组。但是,这些数组需要预先确定最大大小,因此如果文件名小于最大值,则其余部分都是垃圾。然后,当我尝试将该数组用作 fopen() 中的文件名时,它无法识别该文件,因为它在字符串末尾有垃圾。我怎么解决这个问题?这是我的代码:

另外,如何找到缓冲区的大小以使用 fwrite() 将其写出?

非常感谢,bsg

0 投票
2 回答
1723 浏览

c++ - 从缓冲区读取可变长度记录 - 奇怪的内存问题

我正在尝试在一个非常大的数据集上实现一个 i/o 密集型快速排序(C++ qsort)。为了速度,我想一次将一大块数据读入缓冲区,然后使用 qsort 在缓冲区内对其进行排序。(我目前正在处理文本文件,但想尽快转向二进制文件。)但是,我的数据由可变长度记录组成,并且需要告诉 qsort 记录的长度才能进行排序。有什么办法可以标准化吗?我唯一能想到的是相当复杂:我的程序当前从缓冲区读取,直到它遇到换行符(ascii 中的“10”),将每个字符转移到另一个数组。当它找到换行符(输入文件中的分隔符)时,它用空字符填充该记录的缓冲区中剩余的空间数(记录大小设置为 30)。这样,我应该得到一个充满固定大小记录的缓冲区来提供 qsort。

我知道我的方法有几个问题,一个是它很笨拙,另一个是记录大小可能会大于 30,但通常要小得多。有没有更好的方法来做到这一点?

同样,我当前的代码甚至不起作用。当我调试它时,它似乎正在将字符从一个缓冲区传输到另一个缓冲区,但是当我尝试打印出缓冲区时,它只包含第一条记录。

这是我的代码:

非常感谢,bsg

0 投票
11 回答
19007 浏览

c - 在 C 中使用 fread 从标准输入缓冲读取

我试图stdin通过setvbuf在 `_IOFBF~ 模式下使用来有效地读取。我是缓冲的新手。我正在寻找工作示例。

输入以两个整数 ( n, k) 开头。下一n行输入包含 1 个整数。目的是打印有多少整数可以被 整除k

问题是如果 number 在边界处,缓冲区 buf将从 读取232354\n当它应该读取2354(它不能)或根本没有读取时。

我该如何解决这个问题?


编辑
立即解决(通过分析)

编辑
完整的问题规范

0 投票
3 回答
401 浏览

c - 为什么这段代码没有输出预期的输出?

这对于查找错误来说是一个很好的问题。不?至少对初学者来说还可以。

code>

Using the above code, I am trying to read from a file using redirection ./a.out < data. Contents of input file:

But I am not getting the expected output, rather some graphical characters are mixed in. What is wrong?


Hint: (Courtesy Alok)

  • sizeof('1') == sizeof(int)
  • sizeof("1") == sizeof(char)*2

So, use 1 instead :-)

Take a look at this post for buffered IO example using fread.

0 投票
5 回答
4071 浏览

c - 读写结构 [C]

重要编辑:

对不起大家,我在结构上犯了一个大错误。字符*名称;意味着在结构之外,在结构之后写入文件。这样,您读取结构,找出名称的大小,然后读取字符串。还解释了为什么不需要空终止符。但是,我觉得在某个地方,我的实际问题已经得到解答。如果有人想编辑他们的回复,我可以选择一个最合适的回复,我会很感激。

同样,我要问的问题是“如果您阅读一个结构,您是否也在阅读它所包含的数据,或者您是否需要以其他方式访问它”。

对困惑感到抱歉

对于一项任务,我的任务是编写一个程序,该程序将结构写入和读取磁盘(使用 fread 和 fwrite)。

我很难理解这个概念。假设我们有这样的结构:

现在假设我们给它这个数据:

然后我们使用 fwrite... 给定一个文件指针 fp。

现在我们关闭文件,稍后打开它以读取结构。问题是:当我们读取结构时,我们是否也在读取它存储的变量?

那么我们现在可以做类似的事情吗:

还是我们必须比结构更复杂,或者以某种方式分配它们?假设 fread 是:

还假设我们已经在当前函数中定义了结构,如上所述。

谢谢您的帮助!

0 投票
2 回答
25320 浏览

c - C中的fread/fwrite字符串

我有一个包含记录的二进制文件。该文件的结构如下:

结构(见下文) 名称字符串 地址字符串

有问题的结构:

我得到这样的名字:

我写了结构,名字,然后是地址(如上所述)。

其中 fp 是文件指针。

现在我关闭文件。但是,如果我想从文件中读取以取回这些数据,我相信我需要读取结构,读取 nameLength 变量,malloc 足够的内存供名称放置,然后将名称读取到变量中。

像这样:

但是,当我尝试这样做时,我没有得到有效的数据。例子:

所以很明显我做错了什么。有人可以给我一些帮助吗?

0 投票
3 回答
2614 浏览

c - fread二进制文件动态大小字符串

我一直在做这个作业,我需要读入“记录”并将它们写入文件,然后才能稍后读取/查找它们。在程序的每次运行中,用户可以决定写入一条新记录,或者读取一条旧记录(通过名称或#)

该文件是二进制文件,这是它的定义:

程序的工作方式,它将存储结构,然后是名称,然后是地址。名称和地址是动态分配的,这就是为什么需要先读取结构以找到名称和地址的大小,为它们分配内存,然后将它们读入该内存的原因。

出于调试目的,我目前有两个程序。我有我的文件写入程序和文件读取。

我的实际问题是,当我读取我编写的文件时,我读取了结构,打印出电话 # 以确保它工作正常(工作正常),然后读取名称(现在可以使用 record. nameLength 也报告了正确的值)。然而,Fread 不返回可用的名称,它返回空白。

我看到两个问题,要么我没有将名称正确写入文件,要么我没有正确读取它。这是我写入文件的方式:其中 fp 是文件指针。record.name 是一个合适的值,record.nameLength 也是如此。我也在写包含空终止符的名称。(例如“杰克\0”)

然后我关闭文件。这是我读取文件的方式:

请注意,那里有一些调试内容(名称长度和编号,两者都是正确的)。所以我知道文件正确打开,我可以很好地使用名称长度。那为什么我的输出是空白的,或者换行符,或者类似的东西?(输出只是名称:后面什么都没有,程序完成就好了)

谢谢您的帮助。

0 投票
1 回答
1824 浏览

php - 在 PHP fopen 期间不读取 CSV 文件中的磅符号

我遇到了问题,正在从文件中读取井号和单引号,因为我的代码如下:

有谁知道如何解决这个问题。我知道这是一个编码问题,但不确定如何解决。该文件是 CSV 文件。谢谢