gpt4 book ai didi

c - C 中的 fread 实际上是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 16:32:03 24 4
gpt4 key购买 nike

据我了解,fread() 具有以下函数定义:

size_t fread(void *buffer, size_t size, size_t qty, FILE *inptr);

我还了解 inptr 是一个文件指针,当使用 fopen() 函数打开 FILE 指针时返回。我的问题是 inptr 是否将文件的每个字符/字母的内存地址存储在其内存中?如果是这种情况,inptr 中的内存地址是否会复制到 *buffer(指向缓冲区数组的指针)?

还有一件事让我很困惑。每次调用 fread() 时,都会复制/传输 size * qty 字节的内存。是inptr本身指向的文件内容还是正在复制/传输的文件内容的内存地址?

如果有人能帮助我消除困惑,我将不胜感激。谢谢:)

最佳答案

FILE 由您的操作系统实现。对 FILE 进行操作的函数由您的系统实现。你不知道。要了解这一点,您需要浏览操作系统的源代码。
inptr 可能是指向操作系统分配的内存的指针。或者它可能是一个数字,您的操作系统使用它来查找其数据。不管怎样,它是一个句柄,您的系统用它来查找 FILE 特定数据。您的系统决定该数据中的内容。出于缓存目的,可能所有字母都缓存在某个缓冲区中。也许不是。
fread称呼。 Freadinptr 句柄后面的底层实体读取数据。 inptr 由您的系统解释,以访问底层内存或结构或设备或硬盘驱动器或打印机或键盘或鼠标或任何东西。它读取 qty*size 字节的数据。这些数据被放置在缓冲区中。那里没有放置任何指针。从设备读取的字节放置在 buffer 指向的内存中。

关于c - C 中的 fread 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50312089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com