Есть ли эквивалент seekp()
в OCaml? Мне нужно написать символы в файле при определенных смещениях.Пишите на определенную байт/позицию в файле Ocaml
0
A
ответ
2
utop пример, чтобы написать символ ('A') в определенном положении внутри файла (Test.data):
#use "topfind";;
#require "unix";;
open Unix;;
let fd=openfile "Test.data" [O_WRONLY; O_TRUNC; O_CREAT] 0o666;;
let nbBytes=lseek fd 12 Unix.SEEK_SET;;
if nbBytes<>12 then failwith "Unix.lseek";;
let nbChars= write fd "A" 0 1;;
if nbChars<>1 then failwith "Unix.write";;
close fd;;
од -cv Test.data
0000000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 A
Пояснения:
- SEEK_SET указывает позиции относительно начала файла.
- Результат lseek смещен от начиная с файла.
- Чтобы перемотать файл, вы можете использовать:
lseek fd 0 Unix.SEEK_SET
. - Чтобы прочитать второй символ файла, вам необходимо сделать (перед чтением):
lseek fd 1 Unix.SEEK_SET
.
1
Возможно, вы ищете Unix.lseek
, хотя я не знаком с точной семантикой.
Что такое 'seekp'? – melpomene