FILE관련된 함수를 만들려고 합니다.
글쓴이: tni508 / 작성시간: 금, 2007/08/31 - 6:11오후
파일오픈하는 함수를 만들려고 합니다. 아래와 같이 main함수에서 파일포인터와 파일명을 주고 util.c에서 파일을 열어
파일 포인터만 반환해서 쓰고 다시 닫을 순 없을까요? 아래와 같이 하면 계속 에러가 나네요..
-main.c-
FILE *fp;
main(){
getfp(fp,filename);
fprintf(fp,"test\n");
destroyfp(fp);
return 1;
}
-util.c-
int getfp(FILE *fp , char *filename){
if((fp = fopen(filename , "w")) == NULL){
printf("Cannot open file..[%s]\n",filename);
fclose(fp);
}
return 1;
}
int destroyfp(FILE *fp){
fclose(fp);
return 1;
}
Forums:
흠...
저도 허접하지만.... getfp에서 왜 fclose(fp)를 해버리는 거죠? 닫아버리고 나면 FILE * fp로 선언한 fp가 가리키는게 뭔가요? ^^a
destroyfp는 뭐하러 만들었나요? -_-;;
뭐든지 3번은 고민해보세요.
getfp(), destroyfp()
getfp(), destroyfp() 함수에서 fp 인자를 빼보세요.
아마도 잘 될듯...
이 이유는 fp를 global로 선언을 해 두긴 했으나 두 함수의 argument로 들어감으로 인해,
해당 함수를 벗어나면서 할당 받은 fp에 대한 포인트를 잊어 버려서 그럽니다.
getfp() 함수 내부에서 할당 받은 fp의 주소값과 getfp()가 반환된 일후의 주소값을 찍어 보세요.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <beer.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
흑흑....
흑흑.... 고민해보라고 돌려말했는데 이렇게 답변달아놓으시니 제가 깐죽거린거로 보이는군요 ㅠ_ㅠ
음...
가장 나이가 많은 사람은 오래 산 사람이 아니라 많은 경험을 한 사람이다.
가장 나이가 많은 사람은 오래 산 사람이 아니라 많은 경험을 한 사람이다.
댓글 달기