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

fgetc、fputs、fgets函数使用及实例——Linux编程——day2

今天主要学习了fgetc、fputs、fgets函数的使用规则

fgets

int fgetc(FILE *stream);功能:从流中读取下一个字符参数:stream:文件流指针返回值:成功返回读到字符的ASCII码值失败返回EOF读到文件末尾返回EOF

示例:编写程序统计文件的行数

该示例主要统计stdio.h文件中的行数
#include<stdio.h>int main(void)
{FILE *p = NULL;p = fopen("/usr/include/stdio.h","r");if(NULL == p){perror("fail to fopen!");return -1;}char ch;int i = 0;while(EOF != (ch = fgetc(p))){if('\n' == ch){++i;}}fclose(p);printf("line = %d\n",i);return 0;
}

在这里插入图片描述

fgetc/fputc与getchar/putchar的区别

char ch = 0;
ch = getchar();
ch = fgetc(stdin);char ch = 'a'
putchar(ch);
fputc(ch, stdout);

示例:实现将一个文件中的内容拷贝到另一个文件中
我们首先在file.txt文件中写入hello world china!,将其拷贝到a.txt文件中

#include<stdio.h>int main(void)
{FILE *src = NULL;FILE *dest = NULL;char ch;src = fopen("file.txt","r");dest = fopen("a.txt","w");if(NULL == src || NULL == dest)		//打开失败,直接返回{perror("fail to fopen");return -1;}while(EOF != (ch = fgetc(src))){fputc(ch,dest);}printf("save success!\n");fclose(src);fclose(dest);return 0;
}

在这里插入图片描述
可以看到,复制文件成功。

fputs

int fputs(const char *s, FILE *stream);功能:向流中写入一个字符串参数:s:字符串首地址stream:文件流指针返回值:成功返回非负数失败返回EOF

示例:在file.txt文件中写入:hello world!

#include<stdio.h>int main(void)
{FILE *stream;stream = fopen("file.txt","w");char s[20] = "hello world!";if(NULL == stream){perror("fail to fopen");return -1;}fputs(s,stream);printf("success!\n");fclose(stream);return 0;
}

结果:
在这里插入图片描述

fgets

char *fgets(char *s, int size, FILE *stream);功能:从流中读取一个字符串参数:s:存放字符串空间首地址size:最多读取字符的个数stream:文件流指针返回值:成功返回存放字符串空间的首地址失败返回NULL读到文件末尾返回NULL

示例:刚刚在file.txt文件中写入了字符串,现在将其输出出来

#include<stdio.h>int main(void)
{FILE *src = NULL;src = fopen("file.txt","r");char ch[20];if(NULL == src){perror("fail to fopen");return -1;}fgets(ch,sizeof(ch),src);printf("%s\n",ch);fclose(src);return 0;
}

结果:
在这里插入图片描述

以上就是今天全部内容

相关文章:

  • Linux权限【超详细】
  • React实例之完善布局菜单(二)
  • 轻松使用python将PDF转换为图片(成功)
  • 探秘Java 8 Lambda:简洁高效的集合操作
  • STM32--HAL库定时器学习记录(易懂)--持续学习
  • 【安装指南】nodejs下载、安装与配置详细教程
  • 3D人体运动重建
  • Python循环语句——while循环的基础应用
  • 【已解决】Oracle 12541 TNS 无监听程序
  • NAS系统折腾记 – Emby搭建家庭多媒体服务器
  • SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。
  • 深入Spring MVC的工作流程
  • 【OpenCV人脸检测】写了个智能锁屏小工具!人离开电脑自动锁屏
  • ElementUI组件:Link 文字链接
  • 2.4作业
  • 《深入 React 技术栈》
  • classpath对获取配置文件的影响
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES6--对象的扩展
  • js中forEach回调同异步问题
  • Making An Indicator With Pure CSS
  • Nodejs和JavaWeb协助开发
  • oldjun 检测网站的经验
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 对象管理器(defineProperty)学习笔记
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 力扣(LeetCode)965
  • 前端自动化解决方案
  • 区块链共识机制优缺点对比都是什么
  • 小试R空间处理新库sf
  • 终端用户监控:真实用户监控还是模拟监控?
  • Java性能优化之JVM GC(垃圾回收机制)
  • # Apache SeaTunnel 究竟是什么?
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C)一些题4
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (js)循环条件满足时终止循环
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (独孤九剑)--文件系统
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (九)c52学习之旅-定时器
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转) ns2/nam与nam实现相关的文件
  • (转)EOS中账户、钱包和密钥的关系
  • (转)详解PHP处理密码的几种方式
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .htaccess配置重写url引擎
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net IE10 _doPostBack 未定义