2009-12-04 3 views
0

아래 프로그램에서 lseek 함수를 사용합니다 ... 프로그램은 단순히 파일 (이미 존재하는)을 복사하는 것입니다. 나는 예를 들어 파일 의 끝에있는 문자들과 함께 기존 파일을 복사하려고했다 : Sorce_File.txt는 다음을 포함하고있다 : "3 2 1"복사 후 : "3 2 1"복사 파일 프로그램에서 lseek 기능 문제!

나는 확실히 확신한다. 그것은 간단한 문제입니다하지만

#include <fcntl.h> 

    #include <stdio.h> 

    #define MAX 512 

    int main(int argc, char* argv[]){ 
char buf[MAX]; 
int desc_sorc, desc_targ; 
int lbajt; 

if (argc<3){ 
    argv[0]; 
    exit(1); 
} 

desc_sorc = open(argv[1], O_RDONLY); 
    if (desc_sorc == -1){ 

} 

desc_targ = creat(argv[2], 0640); 
if (desc_targ == -1){ 
    exit(1); 
    } 

while((lbajt = read(desc_sorc, buf, MAX)) > 0){ 

    if (lbajt == -1) { 
    perror("position error"); 
    exit(1);} 

    if (write(desc_targ, buf, lbajt) == -1) 

{ 
    exit(1); 


    } 
    } 
if (lbajt == -1){ 
    exit(1); 
} 

if (close(desc_sorc) == -1 || close(desc_targ) == -1){ 
    exit(1); 
} 

exit(0); 
} 
+0

무엇이 질문입니까? –

+0

질문과 적절한 코드 들여 쓰기가 더 쉬울 것입니다 ... – RedGlyph

+0

숙제? 코드가 누락 된 것처럼 보입니다. 붙여 넣은 코드에'lseek'가 표시되지 않습니다. – retracile

답변

2
int desc_sorc, desc_targ; 

당신은 실제로 아무 것도 이러한 초기화하지 어떻게 이일 년부터 찾을 수 없습니다. 어딘가에.

편집 : 이제 수정 했으므로 실제로 다시 테스트 해 보셨습니까?

0

strrev(...)에 해당하는 내용이 누락되었습니다. 작성한 문자열을 반전하고 소스 파일의 끝에서 시작하여 뒤로 읽거나 대상 파일의 끝에서부터 처음으로 다시 쓰십시오.

실제 구현은 독자에게 연습 과제로 남겨 둡니다.