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