C语言这道题目 望大神解答 feof没到结尾则时则为0?
选项Afeof为空时计数选项Dfeof为0计数选项cfeof为0则为假就不计数选项bfeof为0为真计数我没搞懂选项A与D是不是都可以等价吗我感觉选c答案选的B不知道啊?...
选项A feof为空时 计数
选项D feof为0 计数
选项c feof 为0 则为假 就不计数
选项b feof为0 为真 计数
我没搞懂 选项A与D 是不是都可以 等价吗
我感觉选c 答案选的B 不知道啊 ?? 求教啊
说错了 feof不为空 =NULL应该为字符串结束了 展开
选项D feof为0 计数
选项c feof 为0 则为假 就不计数
选项b feof为0 为真 计数
我没搞懂 选项A与D 是不是都可以 等价吗
我感觉选c 答案选的B 不知道啊 ?? 求教啊
说错了 feof不为空 =NULL应该为字符串结束了 展开
3个回答
展开全部
NULL常称为“空”,那是对指针而言的,实际上NULL的定义和'\0'一样都是0。所以选项A与D是一个意思。由于feof()在检测到文件结束时返回非零(实际可能是-1即EOF),而while要在它的()中为非零时循环,所以得不到正确结果当然是C。因为刚进入while时文件肯定没有结束,就使feof(fp)为0,while停止循环,所以一个字符都统计不上来。不过,这只是出题者的本意。严格说,这4项都不会有正确结果,因为feof()这个函数有点特别,要在逻辑上跟在读文件函数后面才能正确起作用,而这段代码中刚进入while时还没有产生读文件动作,所以统计数字往往会出现多1少1问题。正确写法应该这样才好——
while(fgetc(fp),!feof(fp)){
num++;
}
printf("num=%d\n",num);
fclose(fp);
供参考……
while(fgetc(fp),!feof(fp)){
num++;
}
printf("num=%d\n",num);
fclose(fp);
供参考……
展开全部
feof(FILE *fp)函数返回fp指向文件的读写指针是否到达文件尾部,到达时,返回1,否则返回0。在所给的选项中,只能选择C。
追问
题中说的非0 的意思就是特指1??
追答
也不敢这么肯定(各个平台实现可能不同),敢肯定的是,文件的读写指针未到达文件尾部时,返回的一定是0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
feof 的值是数值,不为空
为零表示没结束,结束时为非零,题目自己也提到了
while(){} 是为括号里真时运行{}中的代码
为零表示没结束,结束时为非零,题目自己也提到了
while(){} 是为括号里真时运行{}中的代码
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |