2012-04-08 58 views
0

我有功能。 FA-> file_temp是FA->文件的副本。 FA-> file_temp正在TEMP目錄中。 (C:\用戶\用戶\應用程序數據\本地的\ Temp)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

問題是什麼? – 2012-04-08 05:02:02

+0

爲什麼我斷言失敗? – sleepy 2012-04-08 05:02:37

回答

1

偶然地,沒有你的程序大喊'NULL!!!!!!!!!!!!'assertion failed過嗎?關於斷言的消息是說fo爲空。

雖然我在這裏,

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

可能不是你想要的。這將所有encode(ffile, ftmpname, filesize)!=0存儲到rc中。您可能的意思是:

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

謝謝,我沒有注意到。是的,perror叫nulll(((我不知道爲什麼再次.. – sleepy 2012-04-08 05:08:04

+0

@sleepy,把一個賦值放在'if'條件中是最糟糕的想法之一,無論如何。常見的習慣用法是將賦值放在'如果',然後簡單地執行'if(rc)'。 – 2012-04-08 08:34:22

相關問題