1.我们并不是实时操纵文件,也不是实时生效,它依赖于缓冲区。非缓冲模式编程与常规区别,就是实时与不实时的区别。

2.//fgetc fputc, fgets fputs, fgetwc fputwc, fgetws fputws, fread fwrite这些函数都是缓冲区编程,当对数据要求非常高的时候,不能用这种模式,比如银行程序,存取钱不实时操作能行吗?

3.EOF有两种含义:结束异常

//缓冲区生效:fclose,fflush缓冲区
//EOF有两种含义:结束, 异常 #include <stdio.h> void main()
{
FILE *pf = fopen("path", "w+"); //w模式不可写,
fputs("hello world!", pf); //没有生效,刷新清空缓冲区,或者手动关闭文件,才生效。
fflush(pf);
rewind(pf);
int ch = fgetc(pf);
if (ch == EOF)
{
if (feof(pf))
{
printf("end");
clearerr(pf); //重置文件流状态,可以取消异常。意义不大,就是让指针退回了一步,打了一个空格。
}
if (ferror(pf))
{
printf("ferror");
clearerr(pf);//重置文件流,文件指针不再前进。
} }
  • scanf("%d%d",&a,&b)!=EOF;    scanf返回的是读入数据的数目。

    • 如果a&&b都没有读入,那么上面表达式的结果为0(若a没有读入,则直接放弃b的读入);
    • 如果遇到错误或者文件结尾,那么上面表达式的结果为EOF,对应的有符号数时-1;
    • 如果遇到Crrl+Z,那么上面表达式的结果为EOF,对应的有符号数时-1;

ferror,clearerr和EOF含义的更多相关文章

  1. 关于EOF,转自新浪微博

    本文转自http://blog.sina.com.cn/s/blog_7714171f0101798y.html EOF 是 End Of File 的缩写. 在C语言中,它是在标准库中定义的一个宏. ...

  2. PILE读书笔记_标准I/O

    在学习和分析标准I/O库的同时, 可以重点与Linux的I/O系统调用进行比较. stdin. stdout和stderr都是FILE类型的文件指针, 是由C库静态定义的, 直接与文件描述符0. 1和 ...

  3. C编程经验总结5(剧终)

    Prolog是AI编程语言 Git(分布式)  svn(集中式)   commit(委托,犯罪) patch补丁)  merge(融入) repository(仓库) Ctrl+s(保存)     r ...

  4. C语言文件读写总结

    主要有四种: 1.文件的字符输入输出函数 fgetc fputc2.文件的字符串输入输出函数 fgets fputs3.文件的格式化输入输出函数 fscanf fprintf4.文件的数据块输入输出函 ...

  5. stdio - 标准输入输出库函数

    SYNOPSIS 总览 #include <stdio.h> FILE *stdin; FILE *stdout; FILE *stderr; DESCRIPTION 描述 标注 I/O ...

  6. C错误异常处理,异常处理

    预处理器标识#error的目的是什么啊? 指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编 ...

  7. linux自动备份oracle数据库

    #此脚本只备份数据表,而且为了方便恢复数据是做的单表逐个备份#在写脚本过程中遇到的报错均加入了解决方案的链接(虽然错误代码没有贴出来)#最终将在脚本所在目录生成年月日-时分的目录,目录下为表名.dmp ...

  8. C语言文件操作函数之ferror & feof & clearerr

    这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...

  9. clearerr, feof, ferror, fileno - 检查以及重置流状态

    总览 (SYNOPSIS) #include <stdio.h> void clearerr(FILE *stream); int feof(FILE *stream); int ferr ...

随机推荐

  1. bzoj 3295: [Cqoi2011]动态逆序对(树套树 or CDQ分治)

    Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...

  2. [Codeforces 696D] Legen...

    题目大意: 给出一些匹配串,要造一个长度不超过L的字符串,每个匹配串有自己的价值,匹配串每次出现在字符串里都会贡献一次价值...要求可能得到的最大价值. 匹配串总长不超200,L<=10^14, ...

  3. [OpenCV学习笔记2][Mat数据类型和操作]

    [Mat数据类型和基本操作] ®.运行环境:Linux(RedHat+OpenCV3.0) 1.Mat的作用: Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵 ...

  4. tomcat更改端口号

    apache-tomcat-8文件下的conf文件下的server.xml文件打开将    <Connector port="8080" protocol="HTT ...

  5. Android简介(一)

    Android构架 Android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用架构层.系统运行库层和Linux核心层. 1. ...

  6. navicat将多个表导出为一个sql文件

    1.shift选中多个表 2右键选择--转储sql文件---结构和数据

  7. PHP和Python如何选择?或许可以考虑这三个问题

    撤稿纠错 文/黄小天.李亚洲 (选自Hackernoon 机器之心编译) 2017 年可谓是网页应用与 API 之年,开发者不用每次重新发明轮子,而是利用脚手架和第三方库就能确保项目在几天内实时部署. ...

  8. tree conflict svn 怎么解决

    如果自己和其他人修改了同一个文件,而他已经更新到SVN,你commit时就会出现冲突,如何解决呢? 方法/步骤 使用SVN时,更新一个自己修改的文件到服务器,出现冲突,因为其他同事也修改了这个文件并且 ...

  9. PostgreSql问题:ERROR: operator does not exist: timestamp without time zone > character varying

    问题描述: ERROR:  operator does not exist: timestamp without time zone > character varying 解决方法: //注意 ...

  10. JS中获取session中传过来的值对象

    摘录自:http://www.360doc.com/content/11/0316/13/5790498_101627263.shtml 把某一对象置于session范围内,并在JSP页面中提取ses ...