如图,红色框里的条件有存在的必要么?

来源:2-12 文件下载函数封装

轩辕小齐V

2018-12-03 19:22:05

http://img.mukewang.com/climg/5c050f6b0001fd3113430722.jpg

考虑到老师说话的上下问,加这个条件是因为当最后没有1024字节可以读取时而添加的;

问题:

  1. 首先红色框之前的条件是否已经满足循环条件?

  2. 加入最后真的没有1024字节系统会如何处理,莫非会填充空字节?

  3. 假如最后红框之前的条件 不能单独满足循环,那么第二个条件也是有问题的,如果最后正好是1024字节那么红框条件不满足(因为等于了,而并不是小于),又加之是&& 并且的关系,第二个条件不满足,程序退出,最后1024字节永远读不出来?

    我的理解对么?

写回答

1回答

好帮手慕查理

2018-12-04

您好,1.之前的条件可以满足循环,feof函数为测试文件指针是否到了文件结束的位置。

2.不会填充,fread() 从文件指针 file 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达文件末尾(EOF)的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件。

3.当循环时判断的条件第一个不满足时,循环不会执行,需满足两个条件才可。

    当第一次循环第一个条件满足,第二个条件满足,那么循环中会进行fread操作,此时会$sum_buffer值为1024,假设此时文件中剩下1024字节,那么再次循环,第一个条件满足指针未到文件结尾处,第二个条件则是1024<$filesize,那么第二个条件也满足,循环开始进行fread操作,此时$sum_buffer值会再次加1024,那么再次循环,两个条件都不会满足了,循环退出。文件读完。

祝学习愉快!

0

0 学习 · 4928 问题

查看课程