//读取文件结束的判定 //1.在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束, // feof应用于当文件读取已经结束时,判断是读取失败还是遇到文件未结束 // //2.fgetc函数在读取结束时,返回的是EOF,正常读取时,返回的是读取到字符的ASCII // //3.fgets函数在读取结束时,返回的是NULL,正常读取时,返回的是存放字符串的起始地址 // //4.fread函数在读取时,返沪的是实际读取的完整元素的个数,如果发现 //读取到的完整的元素个数<指定元素个数,则是最后一次读取了 //写代码把text.txt文件拷贝一份,生成test2.txt int main() { FILE* pfread = fopen("test.txt", "r");//读 if (pfread == NULL) { return 1; } FILE* pfwrite = fopen("test2.txt", "w");//写 if (pfwrite = NULL) { fclose(pfread); pfread = NULL; return 1; } //文件打开成功 //读写文件 int ch = 0; while (ch = fgetc(pfread!=EOF));//判断是否结束 { fputc(ch, pfwrite); } if (feof(pfread))//如果为真 { printf("遇到文件结束,文件正常结束\n"); else if(ferror(pfread)) { printf("文件读取失败结束\n"); } } //关闭文件 fclose(pfread); pfread = NULL; fclose(pfwrite); pfwrite = NULL; return 0; } //文件缓冲区 程序数据区--->输出缓冲区--->硬盘--->输入缓冲区--->程序数据区