求解一道C语言基础题

ch=fgetc(fp)是什么意思呀,我看到有些资料说从文件里获取一个字符赋值给ch。但是以下代码中的for语句第二个ch=fgetc(fp)为什么能当做末尾循环体呀?#... ch=fgetc(fp)是什么意思呀,我看到有些资料说从文件里获取一个字符 赋值给ch。但是以下代码中的for语句第二个ch=fgetc(fp)为什么能当做末尾循环体呀?
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp1, *fp2;
char ch;
fp1 = fopen("file1.txt", "r");
if (fp1 == NULL ) {
printf("file1.txt open error\r\n");
return -1;
}
fp2 = fopen("file2.txt", "w");
if (fp2==NULL ) {
printf("file2.txt open error\r\n");
fclose(fp1);
return -1;
}
for (ch = fgetc(fp1); ch != EOF; ch = fgetc(fp1)) {
fputc(ch, fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
展开
 我来答
252680568
2020-07-09 · 超过21用户采纳过TA的回答
知道答主
回答量:98
采纳率:50%
帮助的人:24.4万
展开全部
因为读到文本末尾会存放一个字符EOF,注意这个东西ch != EOF,他是限制循环的,一旦文本中的浮动指针指向了文本末尾,ch != EOF条件就不满住了,循环就会跳出。
这个是个复制文件功能的函数吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2020-07-02 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
这语句的功能就是从指定的文件中读取一个字符,他出现在什么位置,这并不重要。这个语句完全可以把它下移到循环体的末尾,作为循环体内部的一个最后一个语句。效果是完全一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linjunlzy
2020-07-01 · TA获得超过1319个赞
知道小有建树答主
回答量:668
采纳率:82%
帮助的人:327万
展开全部
读取一个字节后,光标位置即文件流指针会自动后移一个字节。
如果txt里面的内容是abc。
那printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
执行三次后就分别输出abc
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
microroom
科技发烧友

2020-07-02 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1553万
展开全部
for循环中之所以能够这样使用fgetc,是因为当到达文件末尾时,fgetc会返回EOF。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式