0

我只是做了一個小程序,讀取文件的名稱拖過它的圖標並將其寫入到輸出文本文件C程序設計:拖放文件在程序的圖標

,但如果我編譯這個程序,它當我試圖通過它拖動文件時崩潰。 如果我用doble打開它就可以了;如果我用命令行和參數打開它就沒關係;但如果我只是跌幅超我編程序文件,它總是崩潰,我不知道爲什麼

只是嘗試這樣進行編譯:

#include <stdio.h> 

int main(int argc, char * argv[]) 
{ 
    FILE * File=fopen("file.txt", "w"); 
    fclose(File); 
    return 0; 
} 

如果拖動&刪除一個簡單的文件在程序圖標上,程序崩潰

有沒有人知道爲什麼?

+0

什麼操作系統? – 2010-11-12 12:11:59

+0

請注意,在Windows上,使用該程序的Unicode路徑會產生無意義的結果。 – Joey 2010-11-12 12:18:05

+0

嗯,即使我通過閱讀(fopen(「file.txt」,「r」);),並且只有當我通過它拖動文件時它崩潰。如果我雙擊它進行順利,並寫入數據..它的該死的怪異......爲什麼它應該崩潰時,我拖過來,而不是當我雙擊它。 該文件夾是我的桌面,所以我有w特權 - os:windows xp – Picio 2010-11-12 14:17:07

回答

2

當您的可執行文件運行時,您可能正在假設當前工作目錄及其權限。在無效的FILE *(例如NULL)上調用fclose很可能導致崩潰。您需要驗證fopen是否成功,例如

#include <stdio.h> 

int main(int argc, char * argv[]) 
{ 
    FILE * f = fopen("file.txt", "w"); 
    if (f != NULL) 
    { 
     // 
     // write stuff to file here if you want... 
     // 
     fclose(f); 
    } 
    return 0; 
} 
+0

@Picio:應該很容易檢查。將第一行(原始代碼)更改爲'FILE * File = NULL;'並查看雙擊它時是否崩潰。 – paxdiablo 2010-11-12 12:24:11