我是C编程新手,但我已经掌握了它。我正在使用FILE函数,该函数永远不会返回NULL。即使文件不存在并初始化为“r”,也会发生这种情况。该代码之前已经有效,但之后它一直保持返回TRUE。我已经以多种方式编写了代码,但所有文件都在那里返回。我甚至更改了文件名以创建一个完全不同的文件,但仍然得到相同的结果。任何帮助都会很棒。提前谢谢。
编辑: 感谢大家。我已经开始工作了。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
fp = fopen("c:\\lest.txt", "w");
if(fp == NULL)
{
printf("File Not Available\n");
exit(0);
}
fclose(fp);
return 0;
}
答案 0 :(得分:4)
你需要检查fp是否为null,而不是fopen。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
fp = fopen("c:\\lest.txt", "r");
if(fp == NULL)
{
printf("File Not Available\n");
exit(0);
}
fclose(fp);
return 0;
}
答案 1 :(得分:4)
fp = fopen("c:\\lest.txt", "r");
if(fopen == NULL)
这些行是错误的。 fopen()
是标准函数。因此fopen
(不带括号)将始终为非NULL ,因为它表示fopen()
的函数指针。
您应该检查fopen()
的返回值。在这种情况下fp
。
if(fp==NULL){
perror("fopen");
exit(1);
}
另请注意,
perror()
功能。exit(0)
将返回0到OS。这表明成功。更好地使用exit(1)
。 答案 2 :(得分:3)
而不是将fopen
测试为null,而是将条件更改为fp
NULL
,而不是:{/ p>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE fp*;
fp = fopen("c:\\lest.txt", "r");
if(fp == NULL)
{
printf("File Not Available\n");
exit(0);
}
fclose(fp);
return 0;
}
答案 3 :(得分:0)
正如你所说,即使更改文件名&amp;然后调用 fp = fopen(“c:\ lest.txt”,“w”); 即使没有名称 lest.txt 的现有文件,你也会得到 FP!= NULL 即可。
会发生这种情况,因为如果指定的文件不存在则会创建fopen()函数中具有指定名称的新文件,然后返回它的文件指针,所以我想你已经得到了答案。
有关详细信息,请参阅函数fopen()http://linux.die.net/man/3/fopen
的手册页