Ошибка нарушения прав чтения при попытке открыть файл - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь проверить, существует ли файл, открыв его с помощью fopen (), а затем проверив, возвращает ли функция NULL.Но когда я запускаю код, он говорит, что обнаружена ошибка нарушения прав доступа для чтения, но я не понимаю, почему, так как я проверил, и файл, который я пытаюсь прочитать, - это txt, и в нем уже есть текст.Может кто-нибудь объяснить, почему и как я могу это исправить?

int main(int argc, char** argv)
{
    int quit = FALSE;
    if (fopen(*(argv+2), 'r') == NULL)
    {
        printf("Invalid input! File does not exit.");
        quit = TRUE;
    }
}

1 Ответ

0 голосов
/ 15 мая 2018

Во-первых, из fopen руководства мы видим, что сигнатура функции:

FILE *fopen(const char *pathname, const char *mode);

Это означает, что он вернет указатель типа FILE и ожидает два аргумента, оба указателя на char. Второй аргумент, который вы передаете fopen в своем коде, это char, а не char*, поэтому мы должны это исправить. Также сохраните возвращенный указатель fopen, так как вы должны использовать его, чтобы закрыть файл после того, как с ним покончено.

Итак, ваш код будет выглядеть примерно так:

FILE *fp;

if ((fp = fopen(argv[2], "r")) == NULL) {
    printf("File does not exist!\n");
    exit(0);
} else {
    /* file exists... do stuff */
    fclose(fp);
}
...