fseek (fp, 0, position);
, безусловно, неправильно, аргументы для fseek
должны быть:
- дескриптор файла.
- позиция.
- «откуда» (откуда рассчитывается позиция).
Другими словами, это должно быть:
fseek (fp, position, SEEK_SET);
И, кроме того, как правило, вы всегда должны проверять код возврата из функций, которые могут завершиться сбоем, даже если вы не думаете, что это произойдет. И вы можете сделать position
a long int
в соответствии с текущим стандартом. Вероятно, это не будет иметь никакого значительного значения для небольших файлов, но у вас возникнут проблемы, когда вы начнете обрабатывать файлы, размер которых больше, чем могут обрабатывать ваши обычные целые числа.