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应该为字符串结束了
展开
 我来答
White_MouseYBZ
推荐于2016-07-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6283万
展开全部
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);
供参考……
xoaxa
2015-03-16 · TA获得超过8605个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3374万
展开全部
feof(FILE *fp)函数返回fp指向文件的读写指针是否到达文件尾部,到达时,返回1,否则返回0。在所给的选项中,只能选择C。
追问
题中说的非0 的意思就是特指1??
追答
也不敢这么肯定(各个平台实现可能不同),敢肯定的是,文件的读写指针未到达文件尾部时,返回的一定是0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lrh3321
2015-03-16 · TA获得超过2182个赞
知道大有可为答主
回答量:2296
采纳率:75%
帮助的人:2080万
展开全部
feof 的值是数值,不为空
为零表示没结束,结束时为非零,题目自己也提到了
while(){} 是为括号里真时运行{}中的代码
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式