Программирование на C: перетащите файл поверх иконки программы - PullRequest
0 голосов
/ 12 ноября 2010

Я только что создал небольшую программу, которая читает имя файла, перетаскиваемого по его значку, и записывает его в выходной текстовый файл

но если я скомпилирую эту программу, она вылетает при попытке перетащить файл поверх нее. если я открою его двойным щелчком, все в порядке; если я открою его с помощью командной строки и параметров, все в порядке; но если я просто уронил файл поверх скомпилированной программы, он всегда вылетает, и я не знаю, почему

просто попробуйте скомпилировать так:

#include <stdio.h>

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

если вы перетащите простой файл поверх значка этой программы, программа вылетит

кто-нибудь знает почему?

1 Ответ

2 голосов
/ 12 ноября 2010

Вы, вероятно, делаете предположения о текущем рабочем каталоге и его разрешениях при запуске исполняемого файла.Вызов fclose для недопустимого FILE * (например, 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;
}
...