IO进程线程作业day2

news2024/12/23 15:01:01

使用fread和fwrite完成两个图片文件的拷贝

#include <myhead.h>	
#define high 541
#define wide 541
int main(int argc, const char *argv[])
{
	//以只读的方式打开图片文件1.bmp
	FILE *fp = NULL;
	if((fp = fopen("./1.bmp", "r")) == NULL)
	{
		perror("fopen error");
		return -1;
	}
	//以只写的方式打开文件work1.bmp
	FILE *fq=NULL;
	if((fq= fopen("./work1.bmp", "w")) == NULL)
	{
		perror("fopen error");
		return -1;
	}
	//先复制位图文件头和位图信息图
	unsigned char head[54];
	fread(head,1,sizeof(head),fp);
	fwrite(head,1,sizeof(head),fq);

	//将光标定位在图像像素矩阵位置
	fseek(fp,54,SEEK_SET);
	//将光标定位在图像像素矩阵位置
	fseek(fq,54,SEEK_SET);
	unsigned char str[3]="";//定义一个容器用来储存和读取像素
	//循环取出1.bmp的像素存入work1.bmp中
	int res;
	while((res=fread(str,1,sizeof(str),fp))>0)
	{
		fwrite(str,1,res,fq);//写入像素
	}
	fclose(fp);
	fclose(fq);
	return 0;
}

现象展示: 

使用read、write完成两个图片文件的拷贝

#include <myhead.h>	
#define high 653
#define wide 653
int main(int argc, const char *argv[])
{
	//以只读的方式打开图片文件2.bmp
	int fp=-1;
	if((fp=open("./2.bmp",O_RDONLY))==-1)
	{
		perror("open error");
		return -1;
	}
	//以只写的方式打开文件work2.bmp
	int fq=-1;
	if((fq=open("./work2.bmp",O_WRONLY|O_CREAT|O_TRUNC,0666))==-1)
	{
		perror("fopen error");
		return -1;
	}
	//先复制位图文件头和位图信息图
	unsigned char head[54];
	read(fp,head,sizeof(head));
	write(fq,head,sizeof(head));

	//将光标定位在图像像素矩阵位置
	lseek(fp,54,SEEK_SET);
	//将光标定位在图像像素矩阵位置
	lseek(fq,54,SEEK_SET);
	unsigned char str[3]={0,0,0};//定义一个容器用来储存和读取像素
	//循环取出2.bmp的像素存入work2.bmp中
	int res;
	while((res=read(fp,str,sizeof(str)))!=0)
	{
		write(fq,str,res);//写入像素
	}
	close(fp);
	close(fq);
	return 0;
}

效果图

3> 将时间在文件中跑起来

1、17:30:41
2、17:30:42
3、17:30:43
键入ctrl+c,结束进程后
...
4、17:35:28
5、17:35:29

#include <myhead.h>	
#include <time.h>
int main(int argc, const char *argv[])
{		
	FILE *fp=NULL;
	char time_buf[100]="";//存储时间格式串的容器
	char str[100]="";
	char ptr[100]="";//存储从文件中读取的时间串
	while (1)
	{
		//以追加的方式打开时间文件
	if((fp=fopen("./time.txt","a+"))==NULL)
	{
		perror("fopen error");
		return -1;
	}

		time_t sysTime=time(NULL);//获取时间秒数
		struct tm *t=localtime(&sysTime);//通过秒数获取时间结构体指针
		//查找最后一个行号的位置
		int count=1;
		while(fgets(str,sizeof(str),fp)!=NULL)
		{
			count++;
		}
		//将时间的格式串储存到一个数组中
		snprintf(time_buf, sizeof(time_buf), "%2d、%2d:%2d:%2d\n", count,t->tm_hour, t->tm_min, t->tm_sec);
		//写入行号和时间串
		fwrite(time_buf,strlen(time_buf),1,fp);
		//移动光标至读取时间位置
		fseek(fp,-strlen(time_buf),SEEK_END);
		fread(ptr,strlen(time_buf),1,fp);
		printf("%s\n",ptr);
		sleep(1); 
		fclose(fp);
	}
	return 0;
}

效果图:

 思维导图

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

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

相关文章

数据分析 - 机器学习

1&#xff1a;线性回归 线性回归是一种统计技术用于对输出变量与一个或多个输入变量之间的关系进行建模 用外行人的话来说&#xff0c;将其视为通过某些数据点拟合一条线&#xff0c;如下所示 以便在未知数据上进行预测&#xff0c;假设变量之间存在线性关系 点和线之间存在微小…

实体类赋值之后,数据库属性最后为null的解决方法

目录 1. 问题所示2. 原理分析1. 问题所示 执行代码赋值的时候,通过Debug可以看到成功被赋值,但执行到最后,该数据库的属性为null 如图所示: 2. 原理分析 针对这种情况,排查了一个晚上才找到根本原因 最后发现是持久化操作的问题,本身赋值之后,对于数据库还要执行一个…

112. Path Sum(路径总和)

问题描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指…

MCAL知识点(二十七):TC275如何通过GPT12实现ABZ解码

目录 1、概述 2、代码实现 1、概述 GPT12 - General Purpose Timer Unit (GPT12):通用定时器单元,具备较为灵活的定时器结构,可以用来做定时器、事件计数、脉冲宽度测量、产生PWM、频率调制、ABZ编码器增量测量。文章记录一下如何通过GPT12实现编码器ABZ信号的测量。 注意…

《基于CEEMDAN一小波包自适应阈值混凝土声发射信号降噪研究》算法思路笔记

![1]杨智中,林军志,汪魁等.基于CEEMDAN-小波包自适应阈值混凝土声发射信号降噪研究[J].振动与冲击,2023,42(03):139-149.DOI:10.13465/j.cnki.jvs.2023.03.016.](https://img-blog.csdnimg.cn/direct/9814ff64cc474cd3aa06ecaea60f2f75.png) 首先对周期循环荷载作用下混凝土试…

辉辉数码:目前电视盒子哪个最好?目前性能最好的电视盒子

大家好&#xff0c;我是辉辉&#xff0c;上期测评发布后我收到了很多粉丝的反馈希望我这期能分享电视盒子推荐&#xff0c;看看目前电视盒子哪个最好。我购入了市面上最热门的十几款电视盒子对比配置、系统后整理了五款目前性能最好的电视盒子推荐给大家。 品牌型号&#xff1…

appium实现自动化测试原理

目录 1、Appium原理 1.1、Android Appium原理图文解析 1.1.2、原理详解 1.1.2.1、脚本端 1.1.2.2、appium-server 1.1.2.3、中间件bootstrap.jar 1.1.2.4、驱动引擎uiautomator 1.2、 IOS Appium原理 1、Appium原理 1.1、Android Appium原理图文解析 执行测试脚本全过…

stm32 DCMI的知识点

1.DCMI的简介 DCMI全称Digital camera interface&#xff08;数字摄像头接口&#xff09;&#xff0c;是一种可以采集摄像头数据的一种接口。此接口适用于黑白摄像头、X24 和 X5 摄像头&#xff0c;并可以假定所有预处理&#xff08;如调整大小&#xff09;都可以在该摄像头模…

术业有专攻!三防加固平板助力工业起飞

在日常使用中的商业电脑比较追求时效性&#xff0c;以市场定位做标准&#xff0c;内部元件只需满足一般要求就行&#xff0c;使用寿命比较短。而三防平板电脑是主要运用在复杂、恶劣的环境下所以在需求方面较高,需要保证产品在恶劣条件下正常使用&#xff0c;满足行业领域的需求…

168基于matlab的六自由度并联摇摆台的反解控制算法

基于matlab的六自由度并联摇摆台的反解控制算法&#xff0c;stewart平台&#xff0c;配有GUI界面&#xff0c;可以自定义角度&#xff0c;杆长等参数。设定动平台位姿即能得到电机参数。程序已调通&#xff0c;可直接运行。 168 六自由度并联摇摆台 反解控制算法 (xiaohongshu.…

CentOS7.6安装RocksDB

一、简介 RocksDB是使用C编写的嵌入式kv存储引擎&#xff0c;其键值均允许使用二进制流。由Facebook基于levelDB开发&#xff0c; 提供向后兼容的levelDB API。 RocksDB针对Flash存储进行优化&#xff0c;延迟极小。RocksDB使用LSM存储引擎&#xff0c;纯C编写。Java版本Rock…

Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决 一、MySQL数据库主从集群概念 MySQL数据库主从集群是一种高可用性和读写分离的数据库架构&#xff0c;它基于MySQL的复制&#xff08;Replication&#xff09;技术来同步数据。在主…

前端|Day2:列表、表格、表单(黑马笔记)

Day2&#xff1a;列表、表格、表单 目录 Day2&#xff1a;列表、表格、表单一、列表1.无序列表2.有序列表3. 定义列表 二、表格1.基本使用2. 表格结构标签(了解)3.合并单元格 三、表单1.input 标签2.input 标签占位文本3.单选框4.上传文件5.多选框6.下拉菜单7.文本域8.label 标…

【wails】(1):使用go做桌面应用开发,wails框架入门学习,在Linux上搭建环境,运行demo项目,并打包测试

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1fK421b7QC/ 【wails】&#xff08;1&#xff09;&#xff1a;使用go做桌面应用开发&#xff0c;wails框架入门学习&#xff0c;在Linux上搭建环境&#xff0c;运行demo项目&#xff0c;并打包测试 2&#xff0c;参考…

第四篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:pyttsx3自动化脚本经典案例

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、雏形示例代码二、扩展思路介绍三、批量处理文本示例代码四、自定义语音设置示例代码五、结合其他库和API示例代码六、语音交互系统示例代码七、多语言支持示例代码八、添加…

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间…

区块链革命:Web3如何改变我们的生活

随着技术的不断发展&#xff0c;区块链技术作为一种去中心化的分布式账本技术&#xff0c;正逐渐成为数字世界的核心。Web3作为区块链技术的重要组成部分&#xff0c;正在引领着数字化时代的变革&#xff0c;其影响已经开始渗透到我们生活的方方面面。本文将深入探讨区块链革命…

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法 1. 使用 scp 命令2. 使用 rsync 命令3. 使用 scp 和 rsync 的图形界面工具4. 使用 FTP/SFTP 协议总结与比较 在 Linux 系统中&#xff0c;数据拷贝是日常操作中的常见需求&#xff0c;尤其是在不同主机或服务器之间进行文…

【MATLAB GUI】 2. 设计一个闹铃/定时器(静态文本、可编辑文本、普通按钮、复选框)

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求该闹铃/定时器可以设定时间、选择是否播放音乐 设计界面&#xff0c;使用了静态文本、可编辑文本、普通按钮、复选框 修改属性string&#xff0c;保存为alarm.fig 在设定时间右边的可编辑文…

WPF中样式

WPF中样式&#xff1a;类似于winform中控件的属性 <Grid><!-- Button属性 字体大小 字体颜色 内容 控件宽 高 --><Button FontSize"20" Foreground"Blue" Content"Hello" Width"100" Height"40"/></G…