以自己试验的小程序开始吧!

#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)函数...相关推荐

  1. c语言fwrite参数,fwrite函数 fwrite函数用法

    fwrite()是C语言标准库中的一个文件处理函数,C语言函数,向文件写入一个数据块,功能是向指定的文件中写入若干数据块,如成功执行则返回实际写入的数据块数目.该函数以二进制形式对文件进行操作,不局限 ...

  2. C语言———不定参数标准库 stdarg.h

    前言: 在很多工程代码中,工程师考虑到后续软件设计的兼容性和扩展性,在接口函数中时常会使用一些可变参数.一开始全部考虑到这些很难,因为统筹全局需要经验和思考来支撑.C语言标准库<stdarg.h ...

  3. next用法C语言,C语言可变参数的使用

    先来个简单的例子:#include #include void test0(int num,...) { va_list ap; va_start(ap, num); while(num--) { p ...

  4. c 语言重载参数类型不同重载和,C++基础学习之函数重载的简单介绍

    前言 我们在平时写代码中会用到几个函数但是他们的实现功能相同,但是有些细节却不同.例如:交换两个数的值其中包括(int, float,char,double)这些个类型.在C语言中我们是利用不同的函数 ...

  5. 参数控制c语言代码走向,C语言可变参数完全解读

    本文转自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html 一.是什么 我们学习C语言时最经常使用printf()函 ...

  6. c语言int val,c语言不定参数与printf函数的实现

    今天学习了C语言不定参数,C语言中的不定参数主要靠这个头文件实现,这个头文件包含了va_list().va_start().va_end()三个宏,其用法为先声明一个va_list类型的变量,它用于访 ...

  7. c 语言 可变参数前要加形参,C/C++中可变参数的用法详细解析

    可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处, ...

  8. c语言默认参数_5.1 C++有默认参数的函数

    点击上方"C语言入门到精通",选择置顶 第一时间关注程序猿身边的故事 作者 闫小林 白天搬砖,晚上做梦.我有故事,你有酒么? C++有默认参数的函数在函数调用时形参从实参获取值,因 ...

  9. c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

    在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...

最新文章

  1. 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)
  2. 第5章-Vue.js交互及生命周期练习
  3. 雷讯和pix_青海叶陇沟金矿地质地球化学特征及找矿方向
  4. 【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!...
  5. 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)
  6. php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询
  7. lgb,xgb,gbdt,adb,RF区别与联系
  8. fatal error LNK1169: 找到一个或多个多重定义的符号 解决方案
  9. 自定义条件查询_跟我学shardingjdbc之自定义分库分表策略-复合分片算法自定义实现...
  10. poi之Excel下载之详细设置
  11. p5.js 实现创意绘板
  12. node mysql菜鸟教程_Node.js 文件系统
  13. openwrt编译smartdns_LEDE/OpenWRT 部署SmartDNS
  14. wps表格l制作甘特图_十分钟学会制作Excel甘特图,工作进度一目了然!
  15. stm32h7高速通信_【STM32H7教程】第48章 STM32H7的FMC总线应用之是32路高速IO扩展
  16. 删除windows recovery分区
  17. chrome使用tab键切换搜索
  18. 白杨SEO:软文怎么写?怎么才能写好推广软文,有哪些技巧?
  19. Truffle 初始化项目 truffle init
  20. 微信小程序实现本地存储

热门文章

  1. 清华大学刘知远教授新作,图神经网络最佳解锁方式 | 送书福利
  2. 直播预告 | 清华大学博士生牛艺霖:常识知识获取与常识推理
  3. Designing GANs:又一个GAN生产车间
  4. 会议邀请 | 中国中文信息学会暑期学校《前沿技术讲习班》
  5. UC Berkeley提出变分判别器瓶颈,有效提高对抗学习平衡性
  6. 丑憨批的html实战
  7. 医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5
  8. oracle asm和文件系统,Oracle工具之--ASM与文件系统及跨网络传输文件
  9. Maven之依赖管理
  10. TensorFlow——加载和使用多个模型解决方案