2014-04-16 2 views
0

이 작은 예제를 컴파일하려고 ...잘못된 변환

#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-page for lseek(3) 참조 : 오프셋 off_t lseek의 off_t ( fildes을 int로

시놉시스
, 어디서를 int로);

설명
다음, fildes 파일 디스크립터와 관련된 개방 파일 설명 파일 오프셋을 설정하여야한다 Lseek로부터() 함수 :

[........] 나는이 해석

는 첫 번째 인수는이 경우 foo는 파일 기술자,해야한다는 것을 의미합니다.

Q : 여기에 무슨 문제가 있습니까?

+0

원시 파일 처리와 표준 입출력 라이브러리를 혼합하지 마십시오. 버퍼가 복잡하고 물건이 더럽습니다. 하나 또는 다른 것을 사용하십시오. –

답변

2

파일 내에서 찾으려면 fseek을 사용하십시오. 나는 결코 lseek의이 방법

을 사용하지 톱

상세 정보 : what's the difference between `fseek`, `lseek`, `seekg`, `seekp`?

+0

감사합니다! 그것은 내가 찾고 있었던 바로 그 것이다. : D 질문에 대한 답변 [오프셋에서 파일 설명자에서 읽기/쓰기] (http://stackoverflow.com/questions/19780919/read-write-from-file-descriptor-at-offset) 혼란 스러웠습니다. – SeagulFish

관련 문제