我刚制作了一个小程序,它读取拖动文件名称并将其写入输出文本文件
但是如果我编译这个程序,当我尝试将文件拖过它时会崩溃。 如果我用doble打开它就可以了;如果我用命令行和参数打开它就可以了;但如果我只是将文件放在我编译的程序上,它总是崩溃,我不知道为什么
尝试像这样编译:
#include <stdio.h>
int main(int argc, char * argv[])
{
FILE * File=fopen("file.txt", "w");
fclose(File);
return 0;
}
如果您将一个简单文件拖放到该程序图标上,程序将崩溃
有谁知道为什么?
答案 0 :(得分:2)
您可能在运行可执行文件时对当前工作目录及其权限做出假设。在无效的FILE *上调用fclose(例如NULL)很可能会导致崩溃。您需要验证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;
}