我试图通过用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;
}
}
答案 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);
}