【问题标题】:C Programming: Drag&Drop a file over a program's iconC 编程:将文件拖放到程序图标上
【发布时间】:2010-11-12 12:11:17
【问题描述】:

我刚刚做了一个小程序,它读取拖动到其图标上的文件名并将其写入输出文本文件

但是如果我编译这个程序,当我尝试将文件拖到它上面时它会崩溃。 如果我用双击打开它就可以了;如果我用命令行和参数打开它就可以了;但是如果我只是在我编译的程序上放一个文件,它总是崩溃,我不知道为什么

试着像这样编译:

#include <stdio.h>

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

如果您将一个简单的文件拖放到该程序图标上,程序就会崩溃

有人知道为什么吗?

【问题讨论】:

  • 请注意,在 Windows 上,使用该程序的 Unicode 路径会得到无意义的结果。
  • hmm 它会崩溃,即使我通过读取 (fopen("file.txt", "r");) 并且只有当我将文件拖到它上面时才会崩溃。如果我双击它会顺利并写入数据..这太奇怪了..为什么当我拖动它而不是双击它时它会崩溃。该文件夹是我的桌面,所以我有 w 权限 - 操作系统:windows xp

标签: c compiler-construction programming-languages drag-and-drop crash


【解决方案1】:

当您的可执行文件运行时,您可能正在对当前工作目录及其权限做出假设。对无效的 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;
}

【讨论】:

  • @Picio:这应该很容易检查。将第一行(原代码)改成FILE *File = NULL;,双击看是否崩溃。
猜你喜欢
  • 2011-03-10
  • 2022-09-24
  • 1970-01-01
  • 2018-06-02
  • 2016-02-20
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
相关资源
最近更新 更多