我想从具有特定偏移量的文件中读取字节。
我必须在VB6和C ++中做同样的事情。
例如:
FILE *file =fopen(szFileName,"rb");
fseek( file, iFirstByteToRead, SEEK_SET);
fread(nBytes,sizeof(unsigned char), iLenCompressedBytes, file);
(是的,我知道nBytes没有声明为字节,但无论如何我将其命名为nBytes以保持我的VB6命名。)
在VB6中我必须使用
Get #iFile, iFirstByteToRead, nBytes
在VB6中,第一个字节(使用“Get”时)位于第1位。 这意味着我不得不说
Get #iFile, 1, nBytes
...从文件的最开头读取字节。
我想知道fseek是否也是基于1的,或者它是否基于0。
我是否必须将iFirstByteToRead减少-1以获得相同的结果?
我的问题是纯粹的理论性质,请不要说我的编码很糟糕......
谢谢。
答案 0 :(得分:5)
简而言之:fseek
的{{1}}偏移量从零开始(例如SEEK_SET
会将流的位置设置为开头)。
答案 1 :(得分:2)
第一个字节位于文件中的偏移0处。