C: чтение файла с отправной точкой - PullRequest
2 голосов
/ 31 мая 2010

Простой вопрос, но я не могу найти ответ в своей книге. Я хочу прочитать двоичный файл для заполнения генератора случайных чисел, но я не хочу заполнять мой генератор одним и тем же начальным числом каждый раз, когда я вызываю функцию, поэтому мне нужно сохранить переменную для моей позиции в файле ( не проблема), и мне нужно знать, как читать файл, начиная с определенной точки в файле (не знаю, как). Код:

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

  FILE *input = fopen("random.bin", "rb");
  unsigned int seed[32];
  fread(seed, sizeof(unsigned int), 32, input);

  // seed 'rng'...

  fclose(input);
}

Ответы [ 3 ]

4 голосов
/ 31 мая 2010

Вы можете использовать ftell(), чтобы прочитать текущую позицию файла, и fseek(), чтобы перейти к определенной позиции, например,

long cur = ftell(f);
fseek(f, 0, SEEK_START);   // jump to beginning
fread(...)
fseek(f, cur, SEEK_START); // returning to previous location.
2 голосов
/ 31 мая 2010

Вы можете использовать fseek для перемещения в произвольную позицию в файле.

fseek принимает третий параметр, который сообщает, к какой позиции относится.

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
1 голос
/ 31 мая 2010

Просто fseek, прежде чем читать что-либо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...