顺序读写函数的介绍:fgetc fputc

news2024/11/24 14:01:39

目录

前提须知:

函数介绍:

fputc:

fpuct写到文件中,这个可以叫做文件流。

文件效果: 

若要将fputc写入屏幕中,可以采取以下代码操作:  

屏幕效果: 

 fgetc:

使用fgetc从标准流中读取数据。—从键盘中读取数据并使用变量接收和使用printf打印

 屏幕结果:输入字符q,由printf打印键盘输入的字符q

用fgetc读取文件:读取文件内容后用变量接收,并使用printf打印出来

文件数据: 

屏幕效果:

进行多次读取、接收、打印:

进行多次读取、接收、并打印的结果:

 fgetc的内涵:

注意,当读取的次数超过了字符的个数,那么会如以下所示:

读取文件中的数据: 

屏幕效果: 

使用fputc和fgetc进行文件拷贝操作:

打开部分:

读写部分(拷贝部分): 

关闭部分:


前提须知:

文件操作的步骤:

  1. 打开文件
  2. 读/写文件
  3. 关闭文件

函数介绍:

  • fgetc:一次只读取一个字符
  • fputc:一次写一个字符

注意:输出是写——“w”,输入是读——“r” 

fputc:

fpuct写到文件中,这个可以叫做文件流。

int main()
{
   FILE * pf = fopen("test.txt","w");
   if(pf == NULL)
   {
       perrot("fopen");
       return 1;
   }
   //写文件
   fputc('x',pf);
   fputc('y',pf);
   fputc('z',pf);
   fputc('q',pf);
   

  fclose(pf);
  pf = NULL;
   return 0;
}
文件效果: 

 

若要将fputc写入屏幕中,可以采取以下代码操作:  

int main()
{
	fputc('b', stdout);
	fputc('i', stdout);
	fputc('t', stdout);

	return 0;
}

stdout是标准输出流, 之前的pf是一个文件指针,fpuct可以使用任何输出流。

屏幕效果: 

 

标准输入流、输出流详情:http://t.csdn.cn/bi7Q9icon-default.png?t=N7T8http://t.csdn.cn/bi7Q9 

 fgetc:

使用fgetc从标准流中读取数据。—从键盘中读取数据并使用变量接收和使用printf打印

int main()
{
	int ch = fgetc(stdin);
	printf("%c\n",ch);
	return 0;
}
 屏幕结果:输入字符q,由printf打印键盘输入的字符q

用fgetc读取文件:读取文件内容后用变量接收,并使用printf打印出来

int main()
{
	FILE* pf = fopen("data.txt","r");
	if (pf == NULL)
	{
		perror("fopen");
	}
	//读文件
	int ch = fgetc(pf);
	printf("%c\n",ch);

	fclose(pf);
	pf = NULL;
	return 0;
}
文件数据: 

屏幕效果:

将文件中的数据读取到屏幕上,但是fgetc一次只能读取一个字符,所以在屏幕上显示的只有第一个字符。

进行多次读取、接收、打印:

	//读文件
	int ch = fgetc(pf);
	printf("%c\n",ch);

	int ch = fgetc(pf);
	printf("%c\n",ch);

	int ch = fgetc(pf);
	printf("%c\n",ch);

进行多次读取、接收、并打印的结果:

 

 fgetc的内涵:

这个其实证明了fgetc会在文件内部布设一个指针,每一次读取完后,指针向后,指向后面的一个字符,关闭文件,这个指针会重置位置。

注意,当读取的次数超过了字符的个数,那么会如以下所示:

读取文件中的数据: 
	//读文件
	int ch = fgetc(pf);
	printf("%c\n",ch);

	int ch = fgetc(pf);
	printf("%c\n",ch);

	int ch = fgetc(pf);
	printf("%c\n",ch);

	int ch = fgetc(pf);
	printf("%c\n",ch);
屏幕效果: 

 

使用fputc和fgetc进行文件拷贝操作:

打开部分:

FILE* pfread = fopen("datal.txt","r");
if (pfread == NULL)
{
  perror("fopen-1");
  return 1;
}
FILE * pfwrite = fopen("data2.txt","w");
if (pfwrite == NULL)
{
   perror("fopen-2");
   fclose(pfread);
   pfread = NULL;
   return 1;
}

打开文件部分,分别打开两个文件,第一个文件是读的,第二个文件是写的,当然如果写的文件出错了,那么读的文件也没有必要存在了,所以当写的文件打开出错后便关闭读的文件。

读写部分(拷贝部分): 

//读文件 - 写文件
int ch = 0;
while ((ch = fgetc(pfread)) != EOF)
{
  fputc(ch, pfwrite);
  return 0;
}

循环部分,读取一个文件,把读取的字符使用变量接收,然后让fpuct将变量内容写入文件中。 

关闭部分:

fclose(pfread);
pfread = NULL;
fclose(pfwrite);
pfwrite = NULL;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于KubeFATE的FATE-LLM任务实战

随着大型语言模型的不断蓬勃发展,相关新模型,新应用和新范式也在不断涌现,自 4 月发布以来,FATE-LLM 已经迭代发布了多个版本,不断完善大语言模型在联邦学习场景下的支持,以解决构建、使用大模型时的数据隐…

基于图像形态学处理的路面裂缝检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...................................................... %1:从文件夹中读取多个…

Linux基础知识 总结

Linux基础知识 总结 1、Clion的简单介绍 CLion是以IntelliJ为基础,专为开发C及C所设计的跨平台IDE,可以在Windows、Linux及MacOS使用,这里我是在ubuntu 16.0.4基础上安装。2、下载 Linux版Clion的.tar.gz的压缩包 wget https://download.j…

常用数据库validationQuery语句

常用数据库validationQuery语句 validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句, 下表中收集了几种常见数据库的validationQuery。DataBase validationQueryhsqldb …

【voe】channel receive 和 acm 关联走读

每次看服务端的owt的各种adpater都看得懵懵懂懂翻出三年前的客户端webrtc的代码,才觉得舒坦终于知道为啥owt adapter要这么调用了。ChannelReceiveInterface 是AudioReceiveStream 测试需要的 RtpPacketSinkInterface RtpPacketSinkInterface : This class represents a rece…

系统架构设计(最重要的章节)

系统架构设计 软件架构的概述构件软件架构风格 软件架构的概述 架构设计是在需求分析和软件设计之间的过渡阶段 软件架构设计与生命周期 需求分析:问题空间 架构设计SA:解空间 需求->软件架构设计->系统设计 构件 对象 模块 构件 服务 粒度是越来…

RFID智能档案柜助力各大银行实现RFID智能档案管理

在过去的档案管理过程中,银行常常需要进行繁琐的手工操作,包括分类、排序、装钉、手写档案盒信息等。档案存放无序,查找困难,档案管理效率低下。 问题分析 档案工作流程繁琐低效 银行的档案整理过程繁琐,耗时长&…

flask服务鉴权

基本认证(Basic Authentication): 这是一种简单的鉴权方式,需要客户端发送用户名和密码,服务器验证后允许或拒绝访问。可以使用 Flask-BasicAuth 扩展来实现。首先,安装扩展: pip install Fla…

JS 拖拽事件

1.drag等拖拽事件 拖放是由拖动与释放两部分组成,拖放事件也分为被拖动元素的相关事件,和容器的相关事件。 被拖动元素的相关事件如下所示: 被拖动元素相关事件: 事件描述dragstart用户开始拖动元素时触发drag元素正在拖动时触发dragend用户…

高性能系统的性能优化技巧:从专家的经验中学习 | 开源日报 No.40

binhnguyennus/awesome-scalability Stars: 48.3k License: MIT 这个项目是一个阅读列表,用于说明可扩展、可靠和高性能大规模系统的模式。该项目通过知名工程师的文章和可信参考资料来解释概念,并从为数以百万计甚至十亿用户提供服务的经过实战验证的系…

74、SpringBoot 整合 Spring Data JDBC

总结:用起来跟 Spring Data JPA 差不多 什么是 JdbcTemplate?(Template译为模板) Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 ★ Spring Data JDBC 既不需要JPA、Hibernate这种ORM框架&a…

uniapp:tabBar点击后设置动画效果

APP端不支持dom操作,也不支持active伪类,绞尽脑汁也没办法给uniapp原生的tabBar点击加动画效果,所以最终只能舍弃原生tabBar,改用自定义tabBar。 自定义tabBar的原理是,页面的上部分分别是tabBar对应的页面组件&#…

论文速览【序列模型 seq2seq】—— 【Ptr-Net】Pointer Networks

标题:Pointer Networks文章链接:Pointer Networks参考代码(非官方):keon/pointer-networks发表:NIPS 2015领域:序列模型(RNN seq2seq)改进 / 深度学习解决组合优化问题【…

StableAudio-大模型创作音乐的工具

音乐产业即将发生革命。 今天Stability AI,开源人工智能工具和模型之王,例如Stable DIffusion和StableLM,推出Stable Audio,其首款用于音乐和声音生成的人工智能产品。 音乐行业是出了名的难以进入。即使您有才华和动力&#x…

RFID技术在质量控制和生产追溯中的关键应用

在现代制造业中,质量控制和生产追溯是确保产品质量和合规性的关键环节。RFID技术已经成为实现这一目标的强大工具。本文将探讨RFID技术在质量控制和生产追溯中的关键应用,以及如何利用它来提高生产效率、确保产品质量和满足合规性要求。 生产过程追溯 …

Android11 适配

一、修改targetSdkVersion为30 将build.gradle的目标版本targetSdkVersion修改为30(Android 11) targetSdkVersion 30Android11的改变改变主要影响以Adnroid11 为目标版本的应用(targetSdkVersion>30才有影响),和所…

OpenCV实现模板匹配和霍夫线检测,霍夫圆检测

一,模板匹配 1.1代码实现 import cv2 as cv import numpy as np import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]#图像和模板的读取 img cv.imread("cat.png") template cv.imread(r"E:\All_in\o…

18672-2014 枸杞 学习记录

声明 本文是学习GB-T 18672-2014 枸杞. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了枸杞的质量要求、试验方法、检验规则、标志、包装、运输和贮存。 本标准适用于经干燥加工制成的各品种的枸杞成熟果实。 2 规范性引用文件…

无代码解决信息孤岛,云表实现软件开发"书同文,车同轨"

什么是信息孤岛?信息孤岛就是一个组织或系统内部的信息资源无法与其他部分或外部系统共享、互操作,从而使得这些信息无法在整个组织或系统中发挥最大作用的现象。这种现象通常发生在不同部门、不同业务领域或不同系统之间,导致信息重复、浪费…

精彩回顾 | 迪捷软件亮相2023世界智能网联汽车大会

2023年9月24日,2023世界智能网联汽车大会(以下简称大会)在北京市圆满落幕。迪捷软件北京参展之行圆满收官。 本次大会由工业和信息化部、公安部、交通运输部、中国科学技术协会、北京市人民政府联合主办,是我国首个经国务院批准的…