2012-04-08 3 views
0

기능이 있습니다. FA-> file_temp는 FA-> file의 사본입니다. FA-> file_temp가 TEMP 디렉토리에 있습니다. (C : \ 사용자 \ 사용자 \의 AppData \ 로컬 \ 온도)perror : 해당 파일이나 디렉토리가 없습니다.

stat(FA->file, &st_file); 
filesize = st_file.st_size; 
ffile = fopen(FA->file_temp, "rb"); 
if (ffile == NULL) perror("NULL!!!!!!!!!!!!!1\n"); 

strcpy(str, FA->file_dir); 
strcat(str, "packed"); 
temp_name(str) ; 
strcpy(FA->tmpname , str); 
ftmpname = fopen(FA->tmpname, "wb"); 
if (ftmpname == NULL) perror("NULL!!!!!!!!!!!!!1\n"); 
if (rc = encode(ffile, ftmpname, filesize)!=0) 
    longjmp(Berror, rc); 
+0

무엇이 질문입니까? –

+0

어설 션이 실패한 이유는 무엇입니까? – sleepy

답변

1

아마, 당신의 프로그램이 assertion failed 전에 'NULL!!!!!!!!!!!!'을 소리입니까? 어설 션에 대한 메시지는 fo이 null임을 나타냅니다.

내가 여기있는 동안

,

if (rc = encode(ffile, ftmpname, filesize)!=0) 

당신이 원하는 아마입니다. 모든 encode(ffile, ftmpname, filesize)!=0rc에 저장합니다. 아마도 :

if ((rc = encode(ffile, ftmpname, filesize))!=0) 
+0

감사합니다. 나는 눈치 채지 못했습니다. 예, perror yell nulll ((그리고 왜 다시는 모르겠다.) – sleepy

+0

@sleepy,'if' 조건 안에 과제를 넣는 것은 어쨌든 최악의 아이디어 중 하나이다. 일반적인 관용구는' if' 그리고 단순히 if (rc)를해라. –

관련 문제