当前位置: 首页 > wzjs >正文

建设网站的软件如何做彩票网站的源码

建设网站的软件,如何做彩票网站的源码,怎么做微信上的网站,长春 网站建设学习导航 一、被误用的feof 从函数的名字来看,大家很容易把函数的功能理解成:检测是是否达到文件的结尾。但事实真的如此吗?我们首先来查阅feof函数的返回值: 所以可以确定的是,如果feof检测出文件结束志标记则返回一…

学习导航

一、被误用的feof

从函数的名字来看,大家很容易把函数的功能理解成:检测是是否达到文件的结尾。但事实真的如此吗?我们首先来查阅feof函数的返回值:

所以可以确定的是,如果feof检测出文件结束志标记则返回一个非零值。但这里需要注意,feof检测的是 “文件结束标记” ,而不是 “文件位置标记” ,这在FILE结构体中属于两种不同的标记。文件到达结尾只是说明文件的位置标记达到末尾,不能说明文件结束标记的情况,而只有文件结束标记才能使feof的返回值为真。
 我们可以用下面的代码来说明上面的结论,预先使test.txt的内容为空。

int main()
{FILE* fp = fopen("test.txt", "r");if (fp == NULL){printf("%s", strerror(errno));return 0;}for (int i = 0; i < 2; i++){printf("feof() = %d\n", feof(fp));fgetc(fp);}fclose(fp);fp = NULL;return 0;
}

打印结果如下:

feof() = 0;
feof() = 1;
可以看到即使到达了文件结尾,feof也不能立刻检测出。那为什么第二次就可以呢?其实原因在于fgetc发挥了作用。根据C标准对该函数的说明,当fgetc返回值为EOF时且确实已经到达文件结尾时(返回值为EOF可能有其他的情况),fgetc函数会自动设置文件结束标记。

所以换言之,feof函数并不能检测是否达到文件结尾,它只能测出文件读取失败是否由于文件读取结束引起的。文件读取失败对于fgetc函数来说表现在返回值为EOF。

二、正确的判断方法

正确的做法是根据函数的返回值来进行判断,现在我们对常用函数进行逐一说明:

①fgetc函数

fgetc函数需要检测返回值是否为EOF
如果到达文件结尾,文件结束标志被fgetc函数设置,可以通过feof函数检测出
如果发生读取错误,文件错误标志被fgetc函数设置,可以通过ferror函数检测出

int main()
{FILE* fp = fopen("test.txt", "r");if (fp == NULL){printf("%s", strerror(errno));return 0;}int c = 0;while ((c = fgetc(fp)) != EOF){putchar(c);}//判断是什么原因结束的if (ferror(fp)){printf("I/O error when reading\n");}else if (feof(fp)){printf("End of file reached successfully\n");}flose(fp);fp = NULL;return 0;
}
②fgets

fgets函数需要检测返回值是否为NULL
如果到达文件结尾,文件结束标志被fgets函数设置,可以通过feof函数检测出
如果发生读取错误,文件错误标志被fgets函数设置,可以通过ferror函数检测出

③fread函数

对于fread函数我们需要检测实际返回的读取个数和预期读取个数
如果实际读取个数和预期读取个数不同,说明要么发生读取错误,要么达到文件结尾,那么相应的文件错误标志和文件结束标志也被设置。可以通过ferror和feof函数进行检验。

#define SIZE 5
int main(void)
{double src[SIZE] = { 1.0, 2.0, 3.0, 4.0, 5.0 };double buf[SIZE] = {0};FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式fwrite(src, sizeof(src[0]), SIZE, fp); // 写 double 的数组fclose(fp);fp = fopen("test.bin", "rb");size_t ret_code = fread(buf, sizeof(buf[0]), SIZE, fp); // 读 double 的数组if (ret_code == SIZE) {puts("Array read successfully, contents: ");for (int n = 0; n < SIZE; ++n) printf("%f ", buf[n]);putchar('\n');}else // error handling{ if (feof(fp))printf("Error reading test.bin: unexpected end of file\n");else if (ferror(fp)) perror("Error reading test.bin");}fclose(fp);fp = NULL;return 0;
}

三.总结

**fgetc、fgets、fread才是判断文件是否读取结束的,

  1. 如果fgetc返回EOF则文件读取结束,否则没结束返回当前文件位置标记的ASCII码值。
  2. 如果fgets返回NULL则文件读取结束,否则返回当前文件位置标记的地址
  3. 如果fread返回的实际值即读的实际个数小于预期读的个数说明读取结束,否则没有读取结束**

但是上面三种方式都只是判断文件是否读取结束,但是并不知道是正常读取结束还是异常导致的读取结束,所以我们要通过feof来判断,如果返回非0值,是正常读取结束,否则是异常读取结束,用ferror来打印错误信息。

小编制作不易,点个小猪猪,谢谢大家!


文章转载自:

http://gyUD21p7.Lwcqh.cn
http://0GCJ37cO.Lwcqh.cn
http://Mp4DQJGF.Lwcqh.cn
http://Nm9D5Cvi.Lwcqh.cn
http://N1mUonRr.Lwcqh.cn
http://E4SVVhIJ.Lwcqh.cn
http://wWT9AZ9j.Lwcqh.cn
http://tPAX1ojp.Lwcqh.cn
http://JfVTmXjp.Lwcqh.cn
http://cRaDAaYI.Lwcqh.cn
http://3EyxSjxW.Lwcqh.cn
http://lK1prV7s.Lwcqh.cn
http://FvJZVE62.Lwcqh.cn
http://bs6xy8gi.Lwcqh.cn
http://oLD2WwMg.Lwcqh.cn
http://sQiYF2bG.Lwcqh.cn
http://xtAxLl3o.Lwcqh.cn
http://WyXwP1iv.Lwcqh.cn
http://KfzOR6qH.Lwcqh.cn
http://Ad3kdCa6.Lwcqh.cn
http://SMoRDVhZ.Lwcqh.cn
http://nQvBCi3H.Lwcqh.cn
http://tTWG8CTo.Lwcqh.cn
http://w7lsVIgu.Lwcqh.cn
http://HImpgVHk.Lwcqh.cn
http://6xP50a4k.Lwcqh.cn
http://7vGfbRua.Lwcqh.cn
http://DLNdPl0r.Lwcqh.cn
http://tolVj8jp.Lwcqh.cn
http://8LYo64LV.Lwcqh.cn
http://www.dtcms.com/wzjs/650592.html

相关文章:

  • 河北住房和城乡建设部网站互联网推广的优势
  • 网站建设都需学哪些河北建筑培训网实名认证
  • 郑州企业网站如何建设表白网页在线生成网站
  • 旅游电子商务 网站建设wordpress html5视频
  • 网站代码软件公司网站建设代理怎么做
  • 游戏网站策划wordpress获取当前文章分类
  • 做网站公司选择哪家好北京正规网站建设调整
  • 网站做优化得话从哪里优化湖南网站建设公司 尖端磐石网络
  • .net网站 作品搞个app要多少钱
  • 个人备案做门户网站微网站 百度地图
  • 南宁网站推广优化城市建设灯具网站
  • 推广网站怎么制作南宁网站建设平台
  • 网站开发研究综述南阳网站建设培训班
  • 个人网站免备案吗北京网站建设方案建设公司
  • 学校网站建设的申请怎么做装修网站平台
  • 仿系统之家网站源码网站ip地址 a记录
  • 做字幕网站有哪些北京做建筑信息的网站
  • 建设部网站打不开sem和seo是什么职业岗位
  • 代做电子商务网站作业网站换vps
  • 网站源码免费的wordpress知名中国网站
  • 输入网站域名销氪crm
  • 福田建设大型网站建设公司好吗江苏网站快速排名优化
  • 网站建设和的注意事项网站建设与维护课程设计
  • 网站建设项目推进表为什么要用php做网站
  • 企业网站 源码无锡建设工程信息网
  • 网站建设维护学习莞城注册能源公司网上注册流程
  • 怎么制作网站封面数字营销沙盘大赛
  • python mysql开发网站开发百度网站怎么用
  • 国外网站做盗版wordpress调用分类标签
  • 制作php网站用什么软件手机上有那种网站吗