gpt4 book ai didi

c - 使用 fseek 、 fread 和指针读取文件

转载 作者:行者123 更新时间:2023-11-30 20:58:52 24 4
gpt4 key购买 nike

我正在尝试使用 c 来操作图像,并尝试完全理解 fseek() 和 fread() 机制。

为什么fseek影响了fread函数,却没有改变点的地址,但没有改变或增加点的地址?

这是一个简单的例子

int main()
{
char *x[5]={"axxxx","aaaa","hxxx","rrrrr","xsdsdd"};
char *point=x;
char buffer[65]={0};

fread(buffer,6,1,point); //Here fread copy "axxx"
fseek(point,5,SEEK_CUR); //Here fseek increase point by five bytes
fread(buffer,6,1,point); // Here fread do nothing copy nothing
printf("%s\n",buffer); // buffer contain "axxx" first fread call
printf("%x\n",point); // point address did not changed because of fseek
printf("%x",x); //x still the same as point pointer

return 0;
}

最佳答案

fread 应该采用 FILE * 参数作为第四个参数。您给出一个“char *”。

您在这里真正期望什么?FILE 是一个 opact 结构,包含我们所说的“位置指示器”。这就是允许在文件中“移动”的原因,fseekftell

你的char *没有这个,你的代码有问题。

使用fopen正确打开文件。

关于c - 使用 fseek 、 fread 和指针读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49359195/

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