fread - 读取并跳过内存内容

3

如果我要读取一个文件:

fptr = fopen(read_path, "rb");
fread(contents, size_in_bytes, count, fptr);

假设我想读取4个字节,然后跳过4个字节,然后再读取4个字节,以此类推。我该如何做?具体来说,我将如何操作/提前fptr


3
寻找fseek,你将会找到。 - bmargulies
3个回答

7

使用fseek的示例:

FILE * fptr;

fptr = fopen("example.txt", "rb");
fread(contents, 1, 4, fptr);
fseek(fptr, 4, SEEK_CUR);
// ...
fclose(fptr);

+1,我会在这里使用SEEK_CUR而不是SEEK_SET,这比尝试跟踪绝对位置更容易。 - Hasturkun
@Hasturkun,你的评论很有价值和有趣,我已经更新了我的答案。 - Halim Qarroum

3

我认为你正在寻找的函数是fseek


2

如果要跳过的量很小,你可以将其读入一个虚拟变量中并处理掉:

char contents[SOME_SIZE];
char dummy[4];

fptr = fopen(read_path, "rb");
fread(contents, 4, 1, fptr);
fread(dummy, 4, 1, fptr);
fread(contents+4, 4, count-1, fptr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接