当试图编译这个小例子时......
#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);
and lseek(&foo, 5, SEEK_CUR);
,但这只会让事情变得更糟。(我真的没想到这也能解决任何问题。)
概要
off_t lseek(int fildes , off_t offset , int wherece );描述
lseek() 函数应为与文件描述符fildes关联的打开文件描述设置文件偏移量,如下所示:[…………]
我将其解释为第一个参数应该是文件描述符,在本例中是foo。
问:这里有什么问题?