尝试打开文件时出现读取访问冲突错误

时间:2018-05-15 12:35:08

标签: c file fopen

我试图通过用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 :(得分:2)

首先,从fopen manual,我们可以看到函数签名是:

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);
}