продвигать указатель без чтения

Как вы продвигаете позицию указателя для файла, фактически не читая их.

Я столкнулся с ситуацией, в которой мне нужно было отбросить первые X байтов в файле, а затем начать чтение. (В случае, если вам интересно, файл WAV отбрасывает заголовок размером 44 байта).

В итоге я прочитал их только для того, чтобы продвинуть указатель.

int input_fd;

input_fd = open("sample.wav", O_RDONLY);
assert(input_fd !=-1 );

int dummy[44];

read(input_fd,dummy,44);

Есть ли менее затратный способ сделать это?


person aiao    schedule 13.03.2016    source источник
comment
Обратите внимание, что assert не является правильным способом обработки ошибок во время выполнения! условие assert никогда не должно нарушаться; его присутствие или отсутствие не должно изменять поведение вашей программы.   -  person Antti Haapala    schedule 13.03.2016


Ответы (1)


Вы можете использовать системный вызов lseek().

lseek(input_fd, 44, SEEK_CUR);
person MikeCAT    schedule 13.03.2016