ferror,clearerr和EOF含义
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含义的更多相关文章
- 关于EOF,转自新浪微博
本文转自http://blog.sina.com.cn/s/blog_7714171f0101798y.html EOF 是 End Of File 的缩写. 在C语言中,它是在标准库中定义的一个宏. ...
- PILE读书笔记_标准I/O
在学习和分析标准I/O库的同时, 可以重点与Linux的I/O系统调用进行比较. stdin. stdout和stderr都是FILE类型的文件指针, 是由C库静态定义的, 直接与文件描述符0. 1和 ...
- C编程经验总结5(剧终)
Prolog是AI编程语言 Git(分布式) svn(集中式) commit(委托,犯罪) patch补丁) merge(融入) repository(仓库) Ctrl+s(保存) r ...
- C语言文件读写总结
主要有四种: 1.文件的字符输入输出函数 fgetc fputc2.文件的字符串输入输出函数 fgets fputs3.文件的格式化输入输出函数 fscanf fprintf4.文件的数据块输入输出函 ...
- stdio - 标准输入输出库函数
SYNOPSIS 总览 #include <stdio.h> FILE *stdin; FILE *stdout; FILE *stderr; DESCRIPTION 描述 标注 I/O ...
- C错误异常处理,异常处理
预处理器标识#error的目的是什么啊? 指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编 ...
- linux自动备份oracle数据库
#此脚本只备份数据表,而且为了方便恢复数据是做的单表逐个备份#在写脚本过程中遇到的报错均加入了解决方案的链接(虽然错误代码没有贴出来)#最终将在脚本所在目录生成年月日-时分的目录,目录下为表名.dmp ...
- C语言文件操作函数之ferror & feof & clearerr
这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...
- clearerr, feof, ferror, fileno - 检查以及重置流状态
总览 (SYNOPSIS) #include <stdio.h> void clearerr(FILE *stream); int feof(FILE *stream); int ferr ...
随机推荐
- (转)Docker之Compose服务编排
转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...
- Javac编译时出现包不存在的报错的解决方案
今天在学习包类调用时出现如下错误: packa包不存在,在C盘目录下应该有这个包啊 原因是在当前目录下没找到,因为packa存放在其它目录下 如何解决: 应该配置一个classpath,直接把包所在的 ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
- Spring配置集群定时任务
正常配置定时任务的时候配置定时任务调度工厂的代码如下 <bean id="" class="org.springframework.scheduling.quart ...
- 在Linux上如何查看Python3自带的帮助文档?
俩个步骤: 在Linux终端下输入: ortonwu@ubuntu:~$ pydoc -p 8000 pydoc server ready at http://localhost:8000/ 打开浏览 ...
- 解决jsp中编辑和删除时候弹出框闪退的问题。
---恢复内容开始--- /* 火箭设备特殊记载</li> <!-- yw4 --> */ function getYw4DL(){ var controlparm={&quo ...
- [国嵌攻略][090][linux网络编程模型]
编程模型 Socket的实质就是一个接口,利用该接口,用户在使用不同的网络协议时,操作函数得以统一.而针对不同协议的差异性操作,则交给了Socket去自行解决. TCP编程模型 UDP编程模型
- TIJ笔记:内部类的初始化
看编程思想有点时间了,看到了些在马士兵老师没有讲过的部分,所以打算记录一下 内部类的初始化: .内部类的初始化和外部类的初始化略有不同,可以使用 外部类对象.new 内部类对象 创建内部类对象 pac ...
- 前端自动化构建工具Gulp简单入门
昨天听同事分享了Gulp的一些简单使用,决定自己也试一试. 一.安装 gulp是基于nodejs的,所以要先下载安装node(直接搜node,在官网下载就好了) 1.全局安装gulp npm inst ...
- ==和equals详解+例子
一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅, 担心以后给忘了,所以写下这个,以后复习可以用. (有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步) 一.Java数据类 ...