求解一道C语言基础题

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;
}

第1个回答  2020-07-09
因为读到文本末尾会存放一个字符EOF,注意这个东西ch != EOF,他是限制循环的,一旦文本中的浮动指针指向了文本末尾,ch != EOF条件就不满住了,循环就会跳出。
这个是个复制文件功能的函数吧!
第2个回答  2020-07-02
这语句的功能就是从指定的文件中读取一个字符,他出现在什么位置,这并不重要。这个语句完全可以把它下移到循环体的末尾,作为循环体内部的一个最后一个语句。效果是完全一样的。
第3个回答  2020-07-01
读取一个字节后,光标位置即文件流指针会自动后移一个字节。
如果txt里面的内容是abc。
那printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
printf("%c",fgetc(fp1));
执行三次后就分别输出abc本回答被提问者采纳
第4个回答  2020-07-02
for循环中之所以能够这样使用fgetc,是因为当到达文件末尾时,fgetc会返回EOF。
相似回答