【发布时间】:2020-11-24 23:39:21
【问题描述】:
为了使if 语句起作用,您应该有一个判断为真或假的条件。我不明白以下代码的 p=fopen("test.txt", "r") 部分如何评估为真或假,因为它只包含赋值运算符 = 而不是 == 运算符。
#include <stdio.h>
int main()
{
FILE *p;
if(p=fopen("test.txt","r"))
{
printf("yes\n");
}
else
printf("no\n");
return 0;
【问题讨论】:
-
你需要检查p是否为null,所以fopen()是否成功!
-
@Gonçalo 但这里隐含着这种情况,问题是为什么。
-
@Rup 是的,这是真的
-
@Rup 所以假设你有一个代码依赖于你的文件在这种情况下
p并且你正在使用选项r来读取它,但是假设你的文件不存在,你你的程序会有很大的问题,所以你需要检查fopen()是否顺利。在另一种情况下,您使用某些东西来创建文件并阅读它!它不会有问题,因为你会创造它!但是在这种情况下,如果文件不存在,您就会遇到问题 -
@Gonçalo 是的,OP 的代码已经在这样做了:如果
p不为空,它将为printf("yes\n");,如果为空,则为printf("no\n");。问题是为什么if(p=fopen("test.txt","r"))隐式测试p是否为空。
标签: c if-statement conditional-statements selection