2013-04-25 4 views
2

하나의 파일 포인터를 여러 파일에 순차적으로 재 할당해야합니다.루프에서 파일 포인터를 재 할당

문자열 경로에 파일 경로가 올바르게 있습니다.

내가, 내가 "중단됨 (코어 덤프)"GET 재 할당하는 기능의 경로와 파일 포인터를 전달 ..

내가 frepoen 사용해야
FILE * fptr;  //Global file pointer 
FILE * getfptrr(char * path) 
{ 

    fclose(fptr); 
    fptr = fopen(path, "r"); 

    if(fptr!=NULL) 
     return fptr; 
    else 
    { 
     printf("\n Something's Wrong!!! \n"); 
     exit(1); 
    } 
} 

? 그리고 어떻게 ...

또는 다른 옵션 ??

답변

4

fclose으로 전화하기 전에 fptrNULL이 아닌지 확인하지 마십시오. 정의에 NULL

초기화 fptr

다음은 (당신이 여기에서 무슨 일을하는지 실제로 어떤 또는 freopen) fclose를 호출하기 전에하지 NULL입니다 있는지 확인합니다.

+0

실제로'free'와는 달리'fclose'는 널 포인터를 허용하지 않습니다 ('fclose'에 널 포인터를 전달하는 것은 정의되지 않은 동작입니다). – Medinoc

0

당신은 가까운() 함수를 호출 :

[1] 파일 포인터를 초기화 할 수있는 방법으로?

[2] 또는 이전에 연 파일을 닫으려고합니까?

그렇다면 :

[1]와 포인터를 초기화 할 수있는 사항은 다음과 같습니다

는 는 는

[2] I 가까이() 같은 기능의 경우는 fopen (전화를 건의 할 것)입니다

fptr = NULL; 
    fptr = fopen(path, "r"); 
used

exit() 대신 오류 반환 코드를 사용하는 것이 프로그램을 종료하는 데 더 유익한 방법이므로 사용하는 것이 좋습니다. 오류 코드를 사용하면 코드 전체에서 exit() 함수를 사용하는 것보다 프로그램 논리를 디버그하고 따르는 것이 더 쉬워집니다.