Неверное преобразование из ‘FILE * {aka _IO_FILE *}’ в ‘int’

При попытке скомпилировать этот маленький пример …

#include <iostream>
#include <stdio.h>
#include <unistd.h>

int main(void) {
FILE *foo;
foo = fopen("bar.txt", "rt");
lseek(foo, 5, SEEK_CUR);           // This line is getting compiler error
fclose(foo);
return 0;
}

…Я получаю сообщение об ошибке компилятора относительно вызова lseek(), Выход:

main.cpp|8|error:     invalid conversion from ‘FILE* {aka _IO_FILE*}’ to ‘int’ [-fpermissive]|
unistd.h|334|error:   initializing argument 1 of ‘__off_t lseek(int, __off_t, int)’ [-fpermissive]|

Для записи: я также пытался использовать оба lseek(*foo, 5, SEEK_CUR); а также lseek(&foo, 5, SEEK_CUR);, но это только усугубляет ситуацию. (Я действительно не ожидал, что это что-то решит.)

Ссылаясь на man-страница для lseek (3):

конспект
off_t lseek (int Филдс, off_t смещение, ИНТ откуда);

Описание
Функция lseek () устанавливает смещение файла для описания открытого файла, связанного с дескриптором файла Филдс, следующее:

[……..]

Я понимаю, что это означает, что первый аргумент должен быть дескриптор файла, который в этом случае Foo.

Q: что здесь не так?

0

Решение

Если вы хотите искать в файле, используйте FSEEK. Я никогда не видел, чтобы lseek использовал этот способ

Больше информации: в чем разница между `fseek`,` lseek`, `seekg`,` seekp`?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]