开发者

C: Reading file with a starting point

开发者 https://www.devze.com 2023-01-01 11:21 出处:网络
A simple question but I can\'t find the answer in my book. I want to read a binary file to seed a random number generator, but I don\'t want to seed my generator with the same seed each time I call th

A simple question but I can't find the answer in my book. I want to read a binary file to seed a random number generator, but I don't want to seed my generator with the same seed each time I call the function, so I will need to keep a variable for my position in the file (not a problem) and I would need to know how to read a file starting a specific point in the file (no idea how). The code:

void rng_init(RNG* rng) {
  // ...

  FILE *input = fopen("random.bin", "rb");
  unsigned int seed[32];
  fread(seed, sizeof(unsigned int开发者_如何学C), 32, input);

  // seed 'rng'...

  fclose(input);
}


You can use ftell() to read the current position of the file, and fseek() to jump to a specific position, e.g.

long cur = ftell(f);
fseek(f, 0, SEEK_START);   // jump to beginning
fread(...)
fseek(f, cur, SEEK_START); // returning to previous location.


You can use fseek to move to a random position within a file.

fseek takes a third parameter that tells what the position is relative to.

SEEK_SET - the absolute position from the start of the file
SEEK_CUR - the position relative to where you currently are in the file
SEEK_END - the position relative to the end of the file


Just fseek before you read anything!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号