c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...
以自己试验的小程序开始吧!
#include
#include
void main(void)
{
FILE *fp;
FILE *p;
int ch,c;
if((fp=fopen("F:\\wangyong.txt","r"))==NULL)//打开已经存在的文件
{
printf("error");
exit(1);
}
if((p=fopen("F:\\xiaowen.txt","r"))==NULL)//同上
{
printf("error");
exit(1);
}
while((ch=getc(fp))!=EOF)
{
ungetc(ch,p);//将fp所指向的文件的第一个字符返回给p所指的文件流
}
// rewind(p);
while((c=getc(p))!=EOF)
{
putc(c,stdout);
}
if(fclose(fp)!=0&&fclose(p)!=0)
exit(1);
}
这一个程序输出结果是第一文件内第一个字符,如文件中内容是abcdefg,则会输出字符a;
但是如果加入注释的rewind(p);函数,这个程序会什么也不输入,原因是什么呢?
自己思考半天得到一些结论,纯粹是个人心得,如有不正确请各位帮忙改正,谢谢!
ungetc()函数的作用是讲一个输入ch字符,返回到指定的输入流fp中,在下次调用标准输入函数时,会被
再次读取。如果用ungetc函数返回一个字符到指定输入文件流,此时文件指针是指向这个字符的,所以在下
次对这个输入流调用输入函数时,会输入这个字符。但是如果在想上面程序那样在调用rewind函数以后在调
用输入函数结果就不一样了,因为调用了rewind函数以后文件指针指向文件开头处,在用输入函数时,得到
的是文件指针指向的字符,而此时函数指针并没有指向那个被换回的字符,改字符不会被输入,而输入的只
是文件指针指向的字符(用ungetc函数返回的字符并没有真正的被输入到文件中,只是将该字符返回到文件
的缓冲区中,输入函数都是从缓冲区中获取数据的);
c语言ungetc参数,关于一些C语言标准I/O函数的见解。int ungetc(int ch,FILE *fp)函数...相关推荐
- c语言fwrite参数,fwrite函数 fwrite函数用法
fwrite()是C语言标准库中的一个文件处理函数,C语言函数,向文件写入一个数据块,功能是向指定的文件中写入若干数据块,如成功执行则返回实际写入的数据块数目.该函数以二进制形式对文件进行操作,不局限 ...
- C语言———不定参数标准库 stdarg.h
前言: 在很多工程代码中,工程师考虑到后续软件设计的兼容性和扩展性,在接口函数中时常会使用一些可变参数.一开始全部考虑到这些很难,因为统筹全局需要经验和思考来支撑.C语言标准库<stdarg.h ...
- next用法C语言,C语言可变参数的使用
先来个简单的例子:#include #include void test0(int num,...) { va_list ap; va_start(ap, num); while(num--) { p ...
- c 语言重载参数类型不同重载和,C++基础学习之函数重载的简单介绍
前言 我们在平时写代码中会用到几个函数但是他们的实现功能相同,但是有些细节却不同.例如:交换两个数的值其中包括(int, float,char,double)这些个类型.在C语言中我们是利用不同的函数 ...
- 参数控制c语言代码走向,C语言可变参数完全解读
本文转自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html 一.是什么 我们学习C语言时最经常使用printf()函 ...
- c语言int val,c语言不定参数与printf函数的实现
今天学习了C语言不定参数,C语言中的不定参数主要靠这个头文件实现,这个头文件包含了va_list().va_start().va_end()三个宏,其用法为先声明一个va_list类型的变量,它用于访 ...
- c 语言 可变参数前要加形参,C/C++中可变参数的用法详细解析
可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处, ...
- c语言默认参数_5.1 C++有默认参数的函数
点击上方"C语言入门到精通",选择置顶 第一时间关注程序猿身边的故事 作者 闫小林 白天搬砖,晚上做梦.我有故事,你有酒么? C++有默认参数的函数在函数调用时形参从实参获取值,因 ...
- c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理
在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...
最新文章
- 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)
- 第5章-Vue.js交互及生命周期练习
- 雷讯和pix_青海叶陇沟金矿地质地球化学特征及找矿方向
- 【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!...
- 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)
- php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询
- lgb,xgb,gbdt,adb,RF区别与联系
- fatal error LNK1169: 找到一个或多个多重定义的符号 解决方案
- 自定义条件查询_跟我学shardingjdbc之自定义分库分表策略-复合分片算法自定义实现...
- poi之Excel下载之详细设置
- p5.js 实现创意绘板
- node mysql菜鸟教程_Node.js 文件系统
- openwrt编译smartdns_LEDE/OpenWRT 部署SmartDNS
- wps表格l制作甘特图_十分钟学会制作Excel甘特图,工作进度一目了然!
- stm32h7高速通信_【STM32H7教程】第48章 STM32H7的FMC总线应用之是32路高速IO扩展
- 删除windows recovery分区
- chrome使用tab键切换搜索
- 白杨SEO:软文怎么写?怎么才能写好推广软文,有哪些技巧?
- Truffle 初始化项目 truffle init
- 微信小程序实现本地存储
热门文章
- 清华大学刘知远教授新作,图神经网络最佳解锁方式 | 送书福利
- 直播预告 | 清华大学博士生牛艺霖:常识知识获取与常识推理
- Designing GANs:又一个GAN生产车间
- 会议邀请 | 中国中文信息学会暑期学校《前沿技术讲习班》
- UC Berkeley提出变分判别器瓶颈,有效提高对抗学习平衡性
- 丑憨批的html实战
- 医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5
- oracle asm和文件系统,Oracle工具之--ASM与文件系统及跨网络传输文件
- Maven之依赖管理
- TensorFlow——加载和使用多个模型解决方案