我正在尝试使用 c 操作图像,并尝试完全理解fseek()
和恐惧()
机制。
为什么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 *
为第 4 个参数取一个参数。你给一个“char *”。
你对这里有什么期望?FILE
是一个包含我们所说的“位置指示器”的 opact 结构。这就是允许在文件中“移动”的原因,fseek
而ftell
.
你char *
没有那个,你的代码被窃听了。
正确打开一个文件fopen
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句