I
Size: a a a
SG
SG
SG
SG
AS
I
S
"rb+", считывать чанк, удалять из него все символы определённого рода, seek-ом отматывать назад и вписывать на старое место обновлённый чанк, запомнив положение. Потом тем же seek-ом отправиться чуть-чуть вперёд и начать сначала. Остатки в конце — забить нулями (размер файла не изменится, зато замена произошла сравнительно быстро).local arr = {1, 2, 3, 4, 3, 6, 7}
local function array_clear(arr, value)
local l = #arr
local p = 1
for i = 1, l do
arr[p] = arr[i]
if arr[i] ~= value then
p = p + 1
end
end
for i = p, l do
arr[i] = nil
end
return arr
end
array_clear(arr, 3) --> {1, 2, 4, 6, 7}
Нужны два курсора, очевидно: то где мы остановили перезапись и откуда мы берём данные.p
"rb+", считывать чанк, удалять из него все символы определённого рода, seek-ом отматывать назад и вписывать на старое место обновлённый чанк, запомнив положение. Потом тем же seek-ом отправиться чуть-чуть вперёд и начать сначала. Остатки в конце — забить нулями (размер файла не изменится, зато замена произошла сравнительно быстро).local arr = {1, 2, 3, 4, 3, 6, 7}
local function array_clear(arr, value)
local l = #arr
local p = 1
for i = 1, l do
arr[p] = arr[i]
if arr[i] ~= value then
p = p + 1
end
end
for i = p, l do
arr[i] = nil
end
return arr
end
array_clear(arr, 3) --> {1, 2, 4, 6, 7}
Нужны два курсора, очевидно: то где мы остановили перезапись и откуда мы берём данные.